0

5.1.1 を実行している Android TV (Nexus Player) で起動可能なすべてのアプリのリストを取得しようとしています。

private static Set<ResolveInfo> getInstalledAppsFrom(PackageManager packageManager) {
    Set<ResolveInfo> activities = new HashSet<>();
    activities.addAll(launcherActivitiesIn(packageManager));
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        activities.addAll(leanbackActivitiesIn(packageManager));
    }
    return activities;
}

private static List<ResolveInfo> launcherActivitiesIn(PackageManager packageManager) {
    Intent intent = new Intent()
            .setAction(Intent.ACTION_MAIN)
            .addCategory(Intent.CATEGORY_LAUNCHER);
    return getResolveInfos(packageManager, intent);
}

private static List<ResolveInfo> getResolveInfos(PackageManager packageManager, Intent intent) {
    return packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static List<ResolveInfo> leanbackActivitiesIn(PackageManager packageManager) {
    Intent intent = new Intent()
            .setAction(Intent.ACTION_MAIN)
            .addCategory(Intent.CATEGORY_LEANBACK_LAUNCHER);
    return getResolveInfos(packageManager, intent);
}

上記を使用して、アプリのリストを取得できますが、完全なリストのようには見えません: Netflix はデバイスにインストールされていますが、表示されず、明らかに [設定] がありません。

5.1.1 を実行している Android フォンで同じコードを実行すると、設定アプリが含まれます。

一部のアプリの表示を妨げる​​可能性のあるCATEGORY_LAUNCHERand/orについて何かありますか?CATEGORY_LEANBACK_LAUNCHER

私も試しました:

packageManager.getInstalledApplications(PackageManager.PERMISSION_GRANTED);

同じ効果があります。

完全なコード (この質問を書いている時点) は、Github here でチェックアウトできます。スニペットはAppsRepository クラスからのものです。

4

1 に答える 1

0

質問には、正しく答えるのに十分な詳細が含まれていませんでした。Set<ResolveInfo>正解でした。Netflix のエントリが含まれていました。

問題は、それらを使用しようとしたことにあります:

Intent launchIntent = packageManager.getLaunchIntentForPackage(applicationInfo.packageName);

ここでlaunchIntentは、パッケージ名が正しい場合でも、null になる可能性があります。正しいインテントを返す別の呼び出しがあります。

Intent launchIntent = packageManager.getLeanbackLaunchIntentForPackage(applicationInfo.packageName);

それでも、システム設定を起動する意図が見つかりませんでした。Play サービスとして表示される Google 設定のみ。誰かがこれを解決できれば、受け入れられた回答を変更します!

于 2015-06-14T16:38:56.997 に答える