1

アプリケーションは、起動可能なアクティビティをいくつでも持つことができます。PackageManager を介してこれらのアクティビティのリストを取得する方法を知っています。

startActivity を介して起動できるアクティビティを特定する方法はありますか?

たとえば、Documents To Go アプリには、Word、Excel、Powerpoint、PDF などを起動するさまざまなアクティビティがあります。これらすべてを問題なく起動できます。

ただし、startActivity で起動できないいくつかのアクティビティも含まれています...これを実行しようとすると、SecurityException が発生します。

安全に起動できるアクティビティと起動できないアクティビティを判断できるようにしたいので、アプリケーション内から安全に起動できるアクティビティのリストのみをユーザーに提示します...

これは可能ですか?

4

2 に答える 2

1

持っているパラメーター/データを使用してインテントを作成し、パッケージ マネージャーのresolveActivity()メソッドを使用して、リクエストを処理するアクティビティを確認します。

次に、PackageManager のcheckPermission()メソッドを使用して権限を確認します。

HTH !

于 2010-06-09T05:12:29.800 に答える
0

これはおそらく古い帽子ですが、次の方法を使用できます。

getPackageManager().getLaunchIntentForPackage(
                packageName);

インストールされているアプリのパッケージ名を取得する方法は次のとおりです。

final PackageManager pm = getPackageManager();

        List<ApplicationInfo> packages = pm
                .getInstalledApplications(PackageManager.GET_META_DATA);

        for (ApplicationInfo packageInfo : packages) {

            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG,
                    "Launch Activity :"
                            + pm.getLaunchIntentForPackage(packageInfo.packageName));

        }
于 2011-03-21T15:37:58.563 に答える