0

例えば

<receiver android:name=".BootReceiver" android:enabled="true">
    <intent-filter>    
        <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    </intent-filter>
</receiver>

アプリには受信機があり、設定されていandroid:enabled="true"ます。

以下のコードを試しましたが、うまくいきません。

Intent intent = new Intent(Intent.ACTION_BOOT_COMPLETED);
List<ResolveInfo> resolveInfoList = mPackageManager.queryBroadcastReceivers(intent, PackageManager.GET_RESOLVED_FILTER);

しかし、BootReceiver は resolveInfoList にありません。

また、これらのコードも試しました。

PackageInfo packageInfo = mPackageManager.getPackageInfo(applicationInfo.packageName, PackageManager.GET_RECEIVERS);
ActivityInfo[] receivers = packageInfo.receivers;

一部の受信者は null です。

では、無効化されたレシーバーのインテント フィルターを見つけるにはどうすればよいでしょうか。

4

1 に答える 1

0

私の悪い。

フラグ(GET_DISABLED_COMPONENTS)を見つけました。

だから私はこのコードを使うことができます

List<ResolveInfo> resolveInfoList = mPackageManager.queryBroadcastReceivers(intent, PackageManager.GET_DISABLED_COMPONENTS);

今では動作します。

于 2012-09-11T04:05:51.037 に答える