我尝试实施BroadcastReceiver
的权限方法。
在发件人课程中,我尝试发送普通广播
Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent);
使用AndroidManifest
文件
<uses-permission android:name="com.nhp"/>
在接收器类中,我编写了自定义FirstBroadcastReceiver
public class FirstBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = FirstBroadcastReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: " + intent.getStringExtra("Foo"));
}
}
及其AndroidManifest
<permission android:name="com.nhp" />
<receiver
android:permission="com.nhp"
android:exported="true"
android:name=".receivers.FirstBroadcastReceiver">
<intent-filter>
<action android:name="com.vn.BroadcastReceiver" />
</intent-filter>
</receiver>
我首先安装接收器应用程序,然后安装发件人。它有效!!
但是当我尝试拨打sendBroadcast(intent,"com.nhp");
时,它永远不会触发任何事情。谁能为我解释原因?谢谢
答案 0 :(得分:1)
应该在发件人中声明自定义权限,接收者应该请求它。
此外,广播接收器不需要android:permission
属性。只有在发件人必须具有特定权限的情况下才能使用它。
发件人
发件人在其清单
中声明自定义权限<permission android:name="com.nhp" />
并发送广播
Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent, "com.nhp");
接收方
接收方在其清单中请求自定义权限并侦听广播
<uses-permission android:name="com.nhp"/>
...
...
...
<receiver
android:exported="true"
android:name=".receivers.FirstBroadcastReceiver">
<intent-filter>
<action android:name="com.vn.BroadcastReceiver" />
</intent-filter>
</receiver>
当然,必须首先安装the order of the installations is important和发件人应用,因为它定义了自定义权限。
注意:安装应用程序时会注册自定义权限。必须在使用它的应用程序之前安装定义自定义权限的应用程序。