【问题标题】:Android Broadcasts - sending and receiving with permissionsAndroid 广播 - 使用权限发送和接收
【发布时间】: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"); 时,它永远不会触发任何事情。任何人都可以为我解释为什么?谢谢

【问题讨论】:

    标签: java android android-permissions android-broadcast android-broadcastreceiver


    【解决方案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 和发件人应用必须先安装,因为它定义了自定义权限。

    注意:自定义权限是在安装应用程序时注册的。定义自定义权限的应用必须在使用它的应用之前安装。

    【讨论】:

    • 太棒了!谢谢
    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2020-02-21
    • 2019-10-24
    相关资源
    最近更新 更多