如何检查广​​播发送者是否具有发送它的自定义权限

发布于 2024-12-21 04:35:11 字数 163 浏览 0 评论 0原文

我的应用程序有一个通过广播启动的插件。我已经成功添加了自定义权限,因此只有具有该权限的应用程序才能接收广播。

但是,我不知道如何实现更重要的部分:如何检查发送者是否具有自定义权限,因此只有我的主应用程序可以发送广播?

我知道这是可能的,但我不知道该怎么做。

谢谢!

I have a plugin for my app that is started with a BroadCast. I already managed to add a custom permission, so only apps with the permission can receive the broadcast.

However, I have no idea how to achieve the more important part: How can I check, if the sender has a custom permission, so only my main app can send the broadcast?

I know this is possible, but I don't know how to do it.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

靑春怀旧 2024-12-28 04:35:11

尝试

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" />

Try using:

Context ctx = ...;
int result = ctx.checkCallingPermission("your.permission.goes.here");
if (PackageManager.PERMISSION_GRANTED == result) {
    // Do your stuff here
}

in your broadcast receiver. Or declare the permission in your AndroidManifest.xml where you define your receiver.

<reciever android:name="your.receiver.goes.here"
    android:permission="your.permission.goes.here" />
念﹏祤嫣 2024-12-28 04:35:11

我尝试过在 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。

谢谢。

I've tried using checkCallingPermission from within an AppWidgetProvider and although I've added to the
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"/>
... 

In my widget, result is -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);
   ....
}

Clicking on the widget sends a PendingIntent to start a services which performs an AsyncTask, the postExecute of the AsyncTask sends the Intent I'm waiting for.

Thanks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文