Android自定义广播设置只能由指定的APP接收

思路:类似给Activity的访问添加权限,给广播添加访问权限。Android中是可以自定义权限的,可以对四大组件的访问加上一层保护。

我们在使用Android中的API形式,或者使用adb命令都可以在外部打开一个应用的Activity/Service,以及发送一个广播。所以这个对于一个应用来说是很不安全的,即权限是一种保护机制。

发送广播

Intent intent = new Intent("me.yezhou.AppBlog");
intent.addCategory("receiver");
intent.putExtra("message", "test");
sendOrderedBroadcast(intent, "me.yezhou.receiver");

AndroidManifest.xml

<!--自定义权限-->
<uses-permission android:name="me.yezhou.receiver" ></uses-permission>
<permission android:protectionLevel="normal" android:name="me.yezhou.receiver"></permission>

接收广播

public class AppBlogReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Log.d("yezhou", "AppBlogReceiver: " + bundle.getString("message"));
        }
    }

}

AndroidManifest.xml

<!--自定义权限-->
<uses-permission android:name="me.yezhou.receiver" ></uses-permission>

<application>
    <receiver android:name="me.yezhou.receiver.AppBlogReceiver" android:permission="me.yezhou.receiver">
        <intent-filter>
            <action android:name="me.yezhou.AppBlog" />
            <category android:name="receiver" />
        </intent-filter>
    </receiver>
</application>

同理我们可以对其他组件进行权限保护(可能用的比较多的是对Activity访问添加权限)。

上一篇 Android组件化开发之ImageLoader封装
下一篇 Android getContentResolver().query 获取文件路径NullPointerException
目录
文章列表
1 RxJava2学习之九:购物车合并本地和网络数据
RxJava2学习之九:购物车合并本地和网络数据
2
MySQL 序列使用
MySQL 序列使用
3
CentOS 7下源码部署phpLDAPadmin
CentOS 7下源码部署phpLDAPadmin
4
Nacos配置实时生效测试
Nacos配置实时生效测试
5
DDL与DML的区别
DDL与DML的区别
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。