0

Android がデフォルトで持っているアプリケーション グリッドを複製して、すべての「起動可能な」アプリケーションをロードしようとしています。

私はこのようにしています。

//generate the intent to get the application list 
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

PackageManager manager = getPackageManager();
applicationList = manager.queryIntentActivities(mainIntent, 0);

//sort the list 
Collections.sort(applicationList, new ResolveInfo.DisplayNameComparator(manager));

//user in calculating percentage. 
if (applicationList.size() > 0 ){
    for (ResolveInfo info : applicationList) {

リストを処理して、アプリケーションの名前とアイコンをグリッドビューに表示すると、カメラに関しては、ギャラリーのラベルとアイコンを取得し続けます。

私が使用するラベルを取得するために:

PackageManager manager = getPackageManager();
(String) manager.getApplicationLabel(applicationInfo)

アイコンを取得するため

info.loadIcon(getContext().getPackageManager());

info は ApplicationInfo オブジェクトです。

何が起こっているのだろうか。

これまでのところ、そのアプリケーションに気付きましたが、別のアプリケーションかもしれません。

カメラResolveInfoからカメラアプリケーションを取得する方法を知っている人

デバッグ中にスクリーン ショットを撮りました。これは、その ResolveInfo について取得した情報です。

Camera Resolve Info (情報)

アドバイスありがとう。セザール・グレズ。

4

1 に答える 1

1

何が起こっているのだろうか。

アプリケーションのアイコンとラベルを取得しています。「カメラ」と「ギャラリー」は、2 つの起動可能なアクティビティを持つ 1 つのアプリから取得されます。

アプリケーションではなく、アクティビティのアイコンとラベルを取得する必要があります。とを呼び出して、 が指すアクティビティのアイコンとラベルを取得します。loadLabel()loadIcon()ResolveInfoResolveInfo

このサンプル アプリケーションは、このようなランチャーの構築を示しており、エントリのカメラ アクティビティ アイコンを正しく取得します。

于 2013-06-22T23:16:28.623 に答える