Android 广播 - 发送和接收权限
Android Broadcasts - sending and receiving with permissions
我尝试实现BroadcastReceiver
的权限方法。
在senderclass,我尝试发送一个普通的广播
Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent);
与AndroidManifest
文件
<uses-permission android:name="com.nhp"/>
在receiverclass中,我写了一个自定义的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");
时,它从未触发任何事情。任何人都可以为我解释为什么?谢谢
自定义权限应在发送方声明,接收方应请求。
此外,广播接收器不需要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 必须先安装发件人应用程序,因为它定义了自定义权限。
Note: Custom permissions are registered when the app is installed. The app that defines the custom permission must be installed before the app that uses it.
我尝试实现BroadcastReceiver
的权限方法。
在senderclass,我尝试发送一个普通的广播
Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent);
与AndroidManifest
文件
<uses-permission android:name="com.nhp"/>
在receiverclass中,我写了一个自定义的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");
时,它从未触发任何事情。任何人都可以为我解释为什么?谢谢
自定义权限应在发送方声明,接收方应请求。
此外,广播接收器不需要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 必须先安装发件人应用程序,因为它定义了自定义权限。
Note: Custom permissions are registered when the app is installed. The app that defines the custom permission must be installed before the app that uses it.