2016-08-25 1 views
-1

私はランチャーアプリケーションを開発中です。カメラとギャラリーのパッケージ名が同じで、Google+と写真のパッケージ名が同じであることに気付きました。カメラ/ギャラリーを起動しようとするとギャラリーが開き、Photos/Google +を起動しようとするとGoogle+が開きます。カメラとギャラリーのパッケージ名は同じです

私はこのコードを使ってアプリのリストを取得しています。カメラ用として

Intent i = new Intent(Intent.ACTION_MAIN, null); 
i.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); 

、私は、アプリ名があるとき、私はカメラとパッケージ名は、ギャラリーのようですが、同じもので、多くのアプリケーションがあるかもしれませんカメラを起動する意図を使用することができることを知っています。すべてのアプリに対して一般化されたソリューションはありますか?

PS:これは、彼らが同じパッケージ名を持っていますが、彼らは切り抜いた名前を持っていますが、私は、アプリ情報

for(ResolveInfo ri : availableActivities) { 
    AppItem app = new AppItem(); 
    app.setLabel(ri.loadLabel(manager)); 
    app.setName(ri.activityInfo.packageName); 
    quick_apps.add(app); 
} 

答えて

1

を取得しています方法です、活動を開始するために以下のコードを使用して、あなたの活動を開始するには、これを試してみてください

Intent localIntent = new Intent(); 
    localIntent.setComponent(new ComponentName(
      localResolveInfo.activityInfo.packageName, 
      localResolveInfo.activityInfo.name)); 
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    try 
    { 
     startActivity(localIntent); 
    } catch (ActivityNotFoundException localActivityNotFoundException) 
    { 
     Toast.makeText(mContext, "Package not found!", 0).show(); 
    } 
+0

ありがとうございます! –

+0

これはうれしいよ:) – user3186605

関連する問題