3

システムのサードパーティ アプリケーションで主なアクティビティを取得する方法は?

PackageManager  pm= getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon", pi.applicationInfo.loadIcon(pm));
map.put("appName", pi.applicationInfo.loadLabel(pm));
map.put("packageName", pi.packageName);
}

パッケージ名を取得する方法を知っています。しかし、メインアクティビティの名前を取得する方法がわかりません。

pi.activities[0].name を使用します。それでもヌルポインタを取得します。

誰のアイデアも大歓迎です。

4

2 に答える 2

2

使用する

pm.getLaunchIntentForPackage(pi.packageName);

これにより、起動インテントが得られます。印刷すると、メイン アクティビティとともにランチャー インテントが表示されます。

デバイス ランチャーから起動できるアクティビティのみを表示する場合は、Category Launcherのフィルターを配置する必要があります。

于 2013-01-31T09:15:01.670 に答える
1

以下を使用できます

final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
    ai = pm.getApplicationInfo( this.getPackageName(), 0);
 } catch (final NameNotFoundException e) {
 ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "unknown)");
于 2013-01-31T09:12:27.460 に答える