0

アプリケーションのパッケージ名が与えられた場合、そのアプリケーションがホームスクリーンのウィジェットをサポートしているかどうかを知る方法は??

4

2 に答える 2

0

David Wasser のソリューションも私の最初の推測でしたが、私のウィジェットの 1 つを検出できませんでした。最初の方法がうまくいかない場合は、別の方法があります。

すべてのホーム画面ウィジェットがリッスンする必要がある ACTION_APP_WIDGET_UPDATE アクションのすべてのレシーバーを一覧表示し、パッケージ名でフィルター処理できます。

    PackageManager pm = getPackageManager();
    Intent intent = new Intent();
    intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);

    List<ResolveInfo> list = pm.queryBroadcastReceivers(intent, 0);

    for (ResolveInfo info : list) {
        Log.i("package", info.activityInfo.packageName);
    }
于 2012-08-27T15:40:53.750 に答える
0

PackageManager を使用getPackageInfo(packageName, GET_RECEIVERS)してアプリケーションを呼び出します。

すべてをループして、 内の各オブジェクトPackageInfo.receiversを呼び出します。PackageManager.getReceiverInfo(componentName, GET_META_DATA)ActivityInfoPackageInfo.receivers

フィールドを見てくださいmetadata。これは null であるか、Bundle を含んでいる可能性があります。バンドルが含まれている場合は、バンドル内で key を持つアイテムを探します"android.appwidget.provider"。それが見つかった場合は、アプリケーションがホーム画面のウィジェットをサポートしていることを確信できます。

于 2012-08-27T15:32:00.130 に答える