2011-10-11 28 views

cevap

18

Bunu, zxing tarayıcı uygulamasının yüklenmesini gerektiren uygulamamda yaptım. içeride Bunu isteyecektir senin onclick veya ontouch: bütün bu kodu çözmek sonra

public void createAlert(String title, String message, Boolean button) { 
    // http://androidideasblog.blogspot.com/2010/02/how-to-add-messagebox-in-android.html 
    AlertDialog alertDialog; 
    alertDialog = new AlertDialog.Builder(this).create(); 
    alertDialog.setTitle(title); 
    alertDialog.setMessage(message); 
    if ((button == true)) { 
     alertDialog.setButton("Download Now", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface arg0, int arg1) { 
       Intent browserIntent = new Intent(
        Intent.ACTION_VIEW, 
        Uri.parse("market://search?q=pname:com.google.zxing.client.android")); 
       startActivity(browserIntent); 
      } 
     }); 
    } 
    alertDialog.show(); 
} 

Sonra çağırır

try{ 
    Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    intent.setPackage("com.google.zxing.client.android"); 
    startActivityForResult(intent, 0); 
} catch (Exception e) { 
    createAlert("Barcode Scanner not installed!", "This application uses " + 
    "the open source barcode scanner by ZXing Team, you need to install " + 
    "this before you can use this software!", true); 
} 

o şununla aynı anda yüklü olması için sana sordum fark Uygulamanız. Bu kodu gönderi eklemem gerekmediğinden, ancak yardımcı olabilir

+3

Sadece "Except" i yakalamanız gerektiğini düşünmüyorum, bu durum Exception örneğinin yakalanmasını daha iyi bir hale getirecektir. – AGrunewald

+1

@AGrunewald Tamamen katılıyorum! :) Ben sadece bazen tembel tembelim – TerryProbert

5

Başlangıç:

Intent mediaIntent = new Intent("com.example.intent.action.NAME"); 
// add needed categories 
List<ResolveInfo> listResolveInfo = getPackageManager().queryIntentServices(mediaIntent, 0); 
if (listResolveInfo.size() != 0) { 
    //normal behavior 
} else { 
    //install what you need 
} 

Sana hizmet sorgulama örneğini verir. Aktiviteleri kontrol etmek isterseniz, queryIntentActivities() öğesini arayacaksınız.

8

Kısa yanıt: Hayır, diğer uygulamaları otomatik olarak bağımlılıklar olarak yükleyemezsiniz.

Uzun cevap:

Android Market, bir bağımlılık olarak yüklemek için diğer uygulamalar beyan izin vermez. Sistem olarak, Market'in tek uygulama yüklemeleri için tasarlandığı görülüyor - Linux dağıtım stili mega bağımlılık grafikleri değil. zamanında At

, sen Market eğer öyleyse devredilir kullanıcıyı yüklü uygulamalar için test ve punt olabilir. @QuickNick tarafından önerilen tekniklere bakın (bir uygulama yüklüyse test edin) ve @TerryProbert (eğer piyasaya sürdüğünüzde), eğer istediğin buysa.

En iyi bahsiniz, muhtemelen bağımlılıkların mevcut olmaması durumunda uygulamanızı mükemmel bir şekilde düşürecek şekilde tasarlamanız ve bunları yüklemek için pazara yönelttiğini önermek (veya ısrar etmek).

4

Android Developer Blogu'ndaki bu gönderide özetlenen deseni takip etmen size yardımcı olacaktır. http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html TerryProbert, Intent'in mevcut olmadığını biliyorsanız eksik uygulamayı yüklemesini isteyen kullanıcılara işaret eder. Bir Misyon temel sınıftan türetilmiş

   try { 
       Class<?> missionClass = Class.forName(mPackageName+".Mission"+mission); 
         Method missionDescription; 
         missionDescription = missionClass.getMethod("missionDescription"); 
         mMissionDescription = (String) missionDescription.invoke(null); 
         if (mMissionDescription.length() > 0) { 
          nextMission = mission; 
          break; 
         } 
        } catch (Exception e) { 
         //DEBUG*/Log.v(this.getClass().getName(), "onResume: Mission no "+mission+" not found: "+e.getMessage()); 
        } 

Her görevin ayrı bir sınıfta tutulur,:

2

Burada var olan ilk görev etkinliğini dönmek için kullandığım şey. Türetilmiş sınıflar, Görev1, Görev24 vs. olarak adlandırılır.

Tüm görevler tanımlanmamıştır.

Temel sınıf, görevi açıklayan bir dize döndüren bir soyut sınıf misyonuna sahiptir.

Bu kod bir döngü içerisindedir, bu nedenle misyon = 1 - 99 arası bir görevi temsil etmektedir. Bulunan ilk görev için Açıklama döndüğünde geri döner.

İlgili konular