「Learning Android」 - Oreilly - Marko Gargenta から学んでいます。
私は第11章(ブロードキャストレシーバー)にいます
私は本に従った、そしてすべてがうまくいく。しかし、単一のアプリ内でのブロードキャストの送受信を制限するために、カスタム アクセス許可をどのように使用するかについて質問があります。
本はこのトピックについて明確です。しかし、何かが足りない気がします。
受信者と送信者は、異なるアクセス許可についてどのようにお互いに伝えますか?
ファイルAndroidManifest.xml
内:
<permission
android:name="saleh.yamba.SEND_TIMELINE_NOTIFICATIONS"
android:description="@string/send_timeline_notifications_permission_description"
android:label="@string/send_timeline_notifications_permission_label"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />
<permission
android:name="saleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS"
android:description="@string/receive_timeline_notifications_permission_description"
android:label="@string/receive_timeline_notifications_permission_label"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />
<uses-permission android:name="saleh.yamba.SEND_TIMELINE_NOTIFICATIONS" />
<uses-permission android:name="saleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS" />
ブロードキャストを送信するサービス:
Intent intent = new Intent("saleh.yamba.NEW_STATUS");
updaterService.sendBroadcast(intent, "saleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS");
ここで、送信者は許可を得てインテントを送信しますsaleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS
。わかりました。受信者はこの許可についてどのように知ることができますか?
経由でブロードキャストを受信するアクティビティ内BroadcastReceiver
:
TimelineReceiver receiver;
IntentFilter filter;
protected void onCreate(Bundle savedInstanceState)
{
receiver = new TimelineReceiver();
filter = new IntentFilter("saleh.yamba.NEW_STATUS");
}
protected void onResume()
{
this.registerReceiver(receiver, filter, "saleh.yamba.SEND_TIMELINE_NOTIFICATIONS", null);
}
protected void onPause()
{
this.unregisterReceiver(receiver);
}
private class TimelineReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//do something.
}
}
ここで、受信者は別の許可でそれを受け取ります。OK、
受信者は についてどのように知っていますかsaleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS
。
レシーバー部分のコードには、レシーバーがパーミッションBroadcastReceiver
を持っている場合にのみ が呼び出されることを示すものは何もありません。saleh.yamba.RECEIVE_TIMELINE_NOTIFICATIONS