10

Android Lのすべてのデフォルトアプリを取得したいと思います。私のコードを最初に見てみましょうAndroid Lで間違って表示されているデフォルトアプリの一覧L

private void getMyAppLauncherDefault() { 
    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); 
    filter.addCategory(Intent.CATEGORY_HOME); 
    List<IntentFilter> filters = new ArrayList<IntentFilter>(); 
    filters.add(filter); 
    List<ComponentName> activities = new ArrayList<ComponentName>(); 
    final PackageManager packageManager = (PackageManager) getPackageManager(); 

    packageManager.getPreferredActivities(filters, activities, null); 
    for (ComponentName activity : activities) { 

     Log.d(TAG,"======packet default:==="+activity.getPackageName()); 
    } 
} 

これはログです。ログにはcom.google.android.googlequicksearchboxcom.vlingo.midasの間に間違った結果が表示されます。両方とも音声アプリですが、私はデフォルトでcom.google.android.googlequicksearchboxを設定しました。ログにcom.vlingo.midasが表示される理由はわかりません。どうすれば修正できますか?おかげ

16:02:44.817 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.vlingo.midas 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.launcher 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.google.android.googlequicksearchbox 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms 
16:02:44.827 /com.exam D/Sample: ======packet default:===com.google.android.apps.plus 

更新:

public static boolean isMyAppDefault(Context context) { 
     final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); 
     filter.addCategory(Intent.CATEGORY_HOME); 

     List<IntentFilter> filters = new ArrayList<IntentFilter>(); 
     filters.add(filter); 

     final String myPackageName = context.getPackageName(); 
     List<ComponentName> activities = new ArrayList<ComponentName>(); 
     final PackageManager packageManager = (PackageManager) context.getPackageManager(); 

     packageManager.getPreferredActivities(filters, activities, null); 

     for (ComponentName activity : activities) { 
      if (myPackageName.equals(activity.getPackageName())) { 
       return true; 
      } 
     } 
     return false; 
    } 
+0

'com.vlingo.midas'は追加フィルタをサポートしている可能性があります。これを確認するには、それぞれのフィルターをパッケージ名で印刷します。 – F43nd1r

+0

@ F43nd1r:どうすれば印刷できますか?フィルタのサイズは1ですが、 'filters'のサイズは4ですが、フィルタの名前は表示できません。 – Jame

+0

com.vlingo.midasは異なる目的/アプリケーションのデフォルトです。問題が発生した場合は –

答えて

2

があります。完全に正しいです。それはそれが意味することを実行します。

これで、デフォルトでcom.google.android.googlequicksearchbox音声アプリケーションが設定されているため、ログに表示されます。 com.vlingo.midasはおそらく音声の代わりに他の種類のカテゴリのデフォルトとして設定されているために表示されています。

+0

@ user8430私に知らせてください。 –

+0

私はあなたと私が誰かから同じソースを得ると思います。あなたのソリューションでは、上記の私のコードと似ていますが、ただ何かを変更してください。投稿する前にあなたの解決策をチェックしてください。 – Jame

2

あなたは上記の追加のコード:アプリは、このコードを試してみてください「デフォルト」として設定されているかどうかを確認するには、デフォルトのアプリ名 enter image description here

+0

どうやって証明できますか?そうは思わない。私はすべてをチェックします – Jame

+0

@ user8430それを証明するためにそれを試す必要があります。私はそれを試してみようとあなたに知らせる –

+0

解決策はありますか?私はまだあなたのテストを楽しみにしています – Jame

関連する問題