2011-10-11 14 views

答えて

18

私はこのアプリケーションでzxing scannerアプリをインストールする必要がありました。あなたのonclickやontouch内にこれをお勧めします :

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(); 
} 

を呼び出し

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); 
} 

は、次に出て、すべてそのコードを整理した後、私はそれはのように同時にインストールされるために、あなたが尋ね実現しますあなたのアプリ。このコードを投稿する必要があるかどうかわかりませんが、参考になる可能性があります。

+3

私はあなたがちょうど実際の例外インスタンスをキャッチすることは多分より良いだろう、広範に少し "例外"をキャッチすべきだとは思わない。 – AGrunewald

+1

@AGrunewald私は完全に同意します! :)私は時々例外的に怠け者です – TerryProbert

5

このからのスタート:

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 
} 

私はあなたのサービスを照会の例を与えます。アクティビティをチェックする場合は、queryIntentActivities()を呼び出します。

8

短い回答:いいえ、他のアプリケーションを依存関係として自動的にインストールすることはできません。

長い答え:

Androidマーケットでは、依存関係としてインストールする他のアプリケーションを宣言することはできません。システムとしては、Linuxディストリビューションのメガ依存グラフではなく、単一アプリケーションのインストール用にMarketが設計されているようです。 ランタイム

は、あなたが市場もしそうする上で、ユーザーをインストール済みのアプリケーションのためのテストとパントすることができます。あなたが望むなら@QuickNick(アプリがインストールされているかどうかテストする)と@TerryProbert(市場投入すること)が提案するテクニックを見てください。

あなたの最良の賭けは、依存関係が利用できない場合、あなたのアプリケーションを正常に劣化させるように設計し、それらをインストールするために市場に出すことを提案(または主張)することでしょう。

4

この投稿に記載されているパターンに従って、Androidデベロッパーブログにお役立てください。 http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html Intentが利用できないことがわかっている場合、TerryProbertが指摘するように、ユーザーに不足しているアプリをインストールするように促します。ミッションの基本クラスから派生し

   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()); 
        } 

各ミッションは別のクラスで開催され、:

2

は、ここで私が存在する最初のミッションの活動を返すために使用するものです。派生クラスはMission1、Mission24などと呼ばれます。

すべての任務が定義されているわけではありません。

基本クラスには、ミッションを説明する文字列を返す抽象クラスmissionDescriptionがあります。

このコードはループ内部にあるので、missionDescriptionを呼び出そうとするとミッション= 1〜99をテストします。見つかった最初のミッションの説明が返されたときに戻ります。

関連する問題