检查是否有使用操作字符串注册的BroadCastReceiver

pul*_*988 5 android broadcastreceiver android-intent

所以我需要一种方法来确定是否有针对特定操作字符串注册的broadCastReceiver.

因此,为了检查意图是否可用,我们有方法(来自 http://www.vogella.com/articles/AndroidIntent/article.html)

public boolean isIntentAvailable(Context context, String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> resolveInfo =
            packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
   if (resolveInfo.size() > 0) {
        return true;
    }
   return false;
}
Run Code Online (Sandbox Code Playgroud)

哪个有效,但从我的测试中看起来只是注册活动的意图.我有一个broadCastReceiver注册了特定的操作字符串.它从未将其视为已注册.但如果我发射广播.广播反应.因此,在这种情况下,方法不起作用.

想法?

MBy*_*ByD 9

对于您应该拨打的广播接收器来说几乎是一样的PackageManager#queryBroadcastReceivers.

public abstract List<ResolveInfo> queryBroadcastReceivers (Intent intent, int flags)

Since: API Level 1
Retrieve all receivers that can handle a broadcast of the given intent.

Parameters
intent  The desired intent as per resolveActivity().
flags   Additional option flags.

Returns
A List<ResolveInfo> containing one entry for each matching Receiver. These are ordered from first to last in priority. If there are no matching receivers, an empty list is returned.
Run Code Online (Sandbox Code Playgroud)

看看文档,看看还能得到什么.