6

したがって、特定のアクション文字列に登録されている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;
}

これは機能しますが、私のテストでは、アクティビティが登録されているインテントのみを探します。特定のアクション文字列に対してbroadCastReceiverを登録しています。そしてそれは登録されたものとして決して見ません。しかし、私が放送を解雇した場合。放送が反応します。したがって、この場合、メソッドは機能しません。

アイデア?

4

2 に答える 2

10

ブロードキャスト レシーバーの場合は、ほとんど同じです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.

ドキュメントを見て、他に何が得られるかを確認してください。

于 2012-04-24T07:43:16.380 に答える