36

どのアプリケーションがこのブロードキャストを受信できるかをブロードキャスト送信アプリケーションで指定し、受信アプリケーションでどの特定のアプリケーションがそのブロードキャスト受信者にブロードキャストを送信する許可を持っているかを指定するにはどうすればよいですか...

私はアンドロイドが初めてです。インターネットでドキュメントなどを読みましたが、これらのアクセス許可を指定する構文が見つかりませんでした。

4

5 に答える 5

87

誰がブロードキャスト メッセージを受信できるかを制御するには、メソッドsendBroadcastを使用できます。

public abstract void sendBroadcast (Intent intent, String receiverPermission)

必要な権限の名前を正確に指定します。受信者がこの許可を宣言しない場合、メッセージを取得できません。たとえば、ブロードキャスト送信者は次のことができます。

Intent broadcast = new Intent(this, MyBroadcastReceiver.class);
sendBroadcast(broadcast, "andro.jf.mypermission");

ブロードキャスト送信者のマニフェストで、新しい許可を宣言する必要があります。

<!--  Declaring the special permission -->
<permission android:name="andro.jf.mypermission" 
        android:label="my_permission" 
        android:protectionLevel="dangerous"></permission>

次に、このブロードキャストを受信することになっているアプリケーションで、この許可を宣言し、それを使用することを宣言する必要があります。マニフェストでは、次を追加できます。

<!--  I use the permission ! -->
<uses-permission android:name="andro.jf.mypermission"/>

そしてもちろん、ブロードキャスト レシーバーを宣言する必要があります。

<receiver android:name="MyBroadcastReceiver" android:exported="true" />

カスタム許可の完全な例と、これに関するAndroid 開発者ページについては、この投稿をご覧ください。権限を定義するアプリを最初にインストールする必要があるため、アプリのインストール順序には注意してください。

于 2013-03-09T22:10:59.350 に答える
3

マニフェストの受信者タグでインテント フィルターを使用する

 <receiver
    android:name="Your receiver"
    android:enabled="true"
    android:exported="false" >
    <intent-filter>
        <action android:name="action"/>
        <category android:name="category" />
    </intent-filter>
</receiver>

ブロードキャストをアプリに送信するには

   Intent intent = new Intent();
   intent.setAction("use same action in receiver");
   intent.addcategory("use same category in receiver");
   context.sendBroadcast(intent); 
于 2012-08-02T03:54:11.543 に答える
2

@JFLの回答に基づいて半日の検索とテストを行った後、送信者アプリは<permission>タグと<uses-permission>タグの両方を追加する必要があり、受信者は許可を得てブロードキャストを受信できることがわかりました。そうしないと、レシーバー アプリはブロードキャストを受信しません。

于 2016-10-28T03:16:21.537 に答える