gpt4 book ai didi

java - Android 广播 - 发送和接收权限

转载 作者:行者123 更新时间:2023-11-30 00:27:02 25 4
gpt4 key购买 nike

我尝试实现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"); 时,它永远不会触发任何事情。任何人都可以为我解释为什么?谢谢

最佳答案

自定义权限应在发送方声明,接收方应请求。

此外,广播接收器不需要android:permission 属性。仅当发件人必须具有特定权限时才应使用它。


发件人

发件人在其 list 中声明自定义权限

<permission android:name="com.nhp" />

并发送广播

Intent intent = new Intent();
intent.setAction("com.vn.BroadcastReceiver");
intent.putExtra("Foo", "Bar");
sendBroadcast(intent, "com.nhp");

接收者

接收者在其 list 中请求自定义权限并监听广播

<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.

关于java - Android 广播 - 发送和接收权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com