2012-05-09 8 views
4

LauncherにあるすべてのアプリケーションをIntent.CATEGORY_LAUNCHERの助けを借りて取得できました。Android Fetchがインストールされ、デフォルトのブラウザがデバイスに組み込まれています

は、だから私は、テストアクティビティを作成したテストのために、この活動は、私がボタンを押すと、それは私がこのように小さいCODEで試してみました

NOTE: `it should not display specific. for example i needed only Browser it should display all browser applications.` 

デバイスでアプリケーションを表示する必要があり、単一のボタンが含まれています。

btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_APP_BROWSER); 

      List<ResolveInfo> mainLauncherList = getPackageManager().queryIntentActivities(intent, 0); 
      System.out.println("the list iss = " +mainLauncherList); 
     } 
    }); 

リストは単一のブラウザである1つのブラウザのみを返します。代わりに、カテゴリの

答えて

6

、意図にアクションを与え、ものを問い合わせることACTION_VIEWことができるようにのようなURL、:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("http://www.google.com")); 

List<ResolveInfo> mainLauncherList = getPackageManager().queryIntentActivities(intent, 0); 
Log.e("Browsers","the list iss = " +mainLauncherList); 

のようなものを返します:

[ResolveInfo{44e9d350 com.android.browser.BrowserActivity p=0 o=0 m=0x208000}] 

そして、あなたが持っていると仮定し複数のブラウザがインストールされている場合は、すべてのブラウザが含まれます。たぶん私はあなたの質問を誤解したが、これは技術的にあなたがURLを開くための意図を起動しようとすると同じアプリケーションを返します。

これらのアプリケーションのランチャーアクティビティを取得することについては、主なアプリケーションをすべて取得する方法と、私が与えたコードで既に理解しているので、パッケージ名を(おそらく)ランチャー1(?)

UPDATE

ArrayList<String> allLaunchers = new ArrayList<String>(); 

Intent allApps = new Intent(Intent.ACTION_MAIN); 
List<ResolveInfo> allAppList = getPackageManager().queryIntentActivities(allApps, 0); 
for(int i =0;i<allAppList.size();i++) allLaunchers.add(allAppList.get(i).activityInfo.packageName); 

Intent myApps = new Intent(Intent.ACTION_VIEW); 
     myApps.setData(Uri.parse("http://www.google.es")); 
List<ResolveInfo> myAppList = getPackageManager().queryIntentActivities(myApps, 0); 
for(int i =0;i<myAppList.size();i++){ 
    if(allLaunchers.contains(myAppList.get(i).activityInfo.packageName)){ 
     Log.e("match",myAppList.get(i).activityInfo.packageName+""); 
    } 
} 

私が言っていたとして、あなたはランチャーから、すべてのパッケージを取得し、アクションを実行することができたものからパッケージに対してそれらを一致させます、それは写真を撮るか、ウェブを閲覧するか。あなたはこれでこれを行うことができるはずです。

+0

あなたはu mayhemに感謝しましたが、私のために働いていると言われましたが、ユーザーがブラウザオプションを選択した場合、私はMozilla、Opera、イルカは市場からインストールされています。 – Sukesh

+0

更新を確認し、+1した場合は+1してください。 –

+0

こんにちは、これは私のブラウザの基本アプリのために働いています、同じ方法で私はどのように多くのカメラ/メッセージアプリが私のデバイスにインストールされているような情報を取得したい、それはデフォルト+サードパーティのアプリにすることができます。 私にこれをどうか考えてください。 – Sukesh

0

誰が答えを必要に応じて:

public static void getBrowserApps(Context mcontext) { 
     PackageManager packageManager = mcontext.getPackageManager(); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("http://www.google.com")); 
     List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 
     PackageManager.MATCH_ALL);} 

listは、すべてのブラウザのパッケージ情報が含まれています。

関連する問題