我的应用程序插件是以BroadCast开头的。我已设法添加自定义权限,因此只有拥有该权限的应用才能接收广播。
但是,我不知道如何实现更重要的部分:如果发件人具有自定义权限,我该如何检查,以便只有我的主应用程序可以发送广播?
我知道这是可能的,但我不知道该怎么做。
谢谢!
答案 0 :(得分:2)
尝试使用:
Context ctx = ...;
int result = ctx.checkCallingPermission("your.permission.goes.here");
if (PackageManager.PERMISSION_GRANTED == result) {
// Do your stuff here
}
在您的广播接收器中。或者在您定义接收器的AndroidManifest.xml中声明权限。
<reciever android:name="your.receiver.goes.here"
android:permission="your.permission.goes.here" />
答案 1 :(得分:1)
我已尝试在AppWidgetProvider中使用checkCallingPermission,虽然我已添加到 的AndroidManifest.xml:
...
<permission android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:description="@string/receiveUpdates" android:protectionLevel="normal"
android:label="@string/receiveStatusUpdates" android:name="my.prem.RCV_STATUS">
</permission>
<uses-permission android:name="my.prem.RCV_STATUS"/>
...
在我的小部件中,结果为-1(PackageManager.PERMISSION_DENIED)。
public void onReceive(Context context, Intent intent) {
... // check that this is the Action I've been waiting for.
int result = context.checkCallingPermission(my.prem.RCV_STATUS);
....
}
单击小部件发送PendingIntent以启动执行AsyncTask的服务,AsyncTask的postExecute发送我正在等待的Intent。
感谢。