Android 广播 - 使用权限发送和接收
Posted
技术标签:
【中文标题】Android 广播 - 使用权限发送和接收【英文标题】:Android Broadcasts - sending and receiving with permissions 【发布时间】:2017-12-22 12:07:43 【问题描述】:我尝试实现BroadcastReceiver
的权限方式。
在sender类中,我尝试发送普通广播
Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent);
带有androidManifest
文件
<uses-permission android:name="com.nhp"/>
在receiver类中,我写了一个自定义的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>
我先安装 receiver 应用程序,然后再安装 sender。它奏效了!!
但是当我尝试拨打sendBroadcast(intent,"com.nhp");
时,它永远不会触发任何事情。任何人都可以为我解释为什么?谢谢
【问题讨论】:
【参考方案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 和发件人应用必须先安装,因为它定义了自定义权限。
注意:自定义权限是在安装应用程序时注册的。定义自定义权限的应用必须在使用它的应用之前安装。
【讨论】:
太棒了!谢谢以上是关于Android 广播 - 使用权限发送和接收的主要内容,如果未能解决你的问题,请参考以下文章