Android 自定义广播权限例子

http://www.cnblogs.com/itsdf07/p/3448183.html

自定义广播权限例子:
发送者:Demo_BroadcastSend 发出广播(1、发出无权限广播按钮 , 2、发出带权限广播按钮)

接收者:Demo_BroadcastReceive_A 无自定义广播权限

接收者:Demo_BroadcastReceive_B 有自定义广播权限(manifest中)
<uses-permission android:name="com.sdf.userdefined.receiver.permission" />
<permission
android:name="com.sdf.userdefined.receiver.permission"
android:protectionLevel="normal" />


--------------------------------------------------------------------------------

Demo_BroadcastSend发出无权限广播,Demo_BroadcastReceive_A与Demo_BroadcastReceive_B中的广播接收器均可接收到改广播

结果:
[MyReceiver--->B] onReceive : intent = Intent { act=com.sdf.userdefined.receiver.action cat=[receiver] flg=0x10 cmp=com.sdf.demo_broadcastreceive_b/.MyReceiverB (has extras) }
[MyReceiver--->B] onReceive : message = 无 ---> 权限的广播

[MyReceiver--->A] onReceive : intent = Intent { act=com.sdf.userdefined.receiver.action cat=[receiver] flg=0x10 cmp=com.sdf.demo_broadcastreceive_a/.MyReceiverA (has extras) }
[MyReceiver--->A] onReceive : message = 无 ---> 权限的广播


--------------------------------------------------------------------------------

步骤1:
Demo_BroadcastSend 中(manifest)定义以下权限: 
<uses-permission android:name="com.sdf.userdefined.send.permission" />
<permission
android:name="com.sdf.userdefined.send.permission"
android:protectionLevel="normal" />

步骤2:
Demo_BroadcastReceive_B 中(manifest)定义以下权限: 
<uses-permission android:name="com.sdf.userdefined.receiver.permission" />
<permission
android:name="com.sdf.userdefined.receiver.permission"
android:protectionLevel="normal" /> 


Demo_BroadcastReceive_B 中 ( manifest)的广播接收器加上权限属性:
android:permission="com.sdf.userdefined.send.permission"

以上两步骤同时实现才可接收带权限的广播

结果:
[MyReceiver--->B] onReceive : intent = Intent { act=com.sdf.userdefined.receiver.action cat=[receiver] flg=0x10 cmp=com.sdf.demo_broadcastreceive_b/.MyReceiverB (has extras) }
[MyReceiver--->B] onReceive : message = 带 ---> 权限的广播

--------------------------------------------------------------------------------

广播发送者:Demo_BroadcastSend

Manifest.xml

<!-- 自定义权限 -->

<uses-permission android:name="com.sdf.userdefined.send.permission" />
<!-- 在声明权限时需要一个android:protectionLevel的属性,它代表“风险级别”:normal、dangerous、signature、signatureOrSystem -->
<permission
android:name="com.sdf.userdefined.send.permission"
android:protectionLevel="normal" />

 

Code :

  发出无权限广播:

    /**
    * Demo_BroadcastReceive_A 与 Demo_BroadcastReceive_B
    * 中均过滤接收该广播,因为intent的action一样
    */
    Intent i = new Intent("com.sdf.userdefined.receiver.action");
    i.addCategory("receiver");
    i.putExtra("message", "无 ---> 权限的广播");
    /**
    * 不带权限,即只要有过滤com.sdf.userdefined.receiver.action即可接收该广播,即
    * Demo_BroadcastReceive_A 与 Demo_BroadcastReceive_B 均可收到
    */
    sendOrderedBroadcast(i, null);

  

  发出带权限广播:

    /**

    * Demo_BroadcastReceive_A 与 Demo_BroadcastReceive_B
    * 中均过滤接收该广播,因为intent的action一样
    */
    Intent ii = new Intent("com.sdf.userdefined.receiver.action");
    ii.addCategory("receiver");
    ii.putExtra("message", "带 ---> 权限的广播");
    /**
    * com.sdf.userdefined.receiver.permission :
    * 该permission在接收程序中的manifest中定义,即这边带权限的广播发出去,谁的应用中定义了该权限,谁才能接收到,
    * 即只有Demo_BroadcastReceive_B 可收到
    */
    sendOrderedBroadcast(ii, "com.sdf.userdefined.receiver.permission");

 

接收者A:Demo_BroadcastReceive_A 

Manifest.xml

<!-- 带权限广播接收器 ,无自定义权限时,android:permission该属性可以去掉 -->
<receiver
  android:name="com.sdf.demo_broadcastreceive_a.MyReceiverA"
  android:permission="com.sdf.userdefined.send.permission" >
  <intent-filter>
    <action android:name="com.sdf.userdefined.receiver.action" />

    <category android:name="receiver" />
  </intent-filter>

</receiver>

 

Code:

package com.sdf.demo_broadcastreceive_a;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
* 广播接收器

* @author dengfu.su

*/
public class MyReceiverA extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Log.d("sdf", "[MyReceiver--->A] onReceive : intent = " + intent.toString());
    Log.d("sdf", "[MyReceiver--->A] onReceive : message = " + intent.getStringExtra("message"));

  }

}

 

接收者A:Demo_BroadcastReceive_B 

Manifest.xml:

<!--
  以下权限为自定义广播权限,当该权限被定义时,Demo_BroadcastSend中发出带该权限的广播,
  本应用的广播接收器即可接收到该广播 ,而Demo_BroadcastReceive_A 接收不到
-->
<uses-permission android:name="com.sdf.userdefined.receiver.permission" />

<permission
  android:name="com.sdf.userdefined.receiver.permission"
  android:protectionLevel="normal" />

 

<!-- 带权限广播接收器 -->
<receiver
  android:name="com.sdf.demo_broadcastreceive_b.MyReceiverB"
  android:permission="com.sdf.userdefined.send.permission" >
    <intent-filter>
      <action android:name="com.sdf.userdefined.receiver.action" />

      <category android:name="receiver" />
    </intent-filter>
</receiver>

 

Code:

package com.sdf.demo_broadcastreceive_b;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
* 带权限的广播接收器

* @author dengfu.su

*/
public class MyReceiverB extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Log.d("sdf", "[MyReceiver--->B] onReceive : intent = " + intent.toString());
    Log.d("sdf", "[MyReceiver--->B] onReceive : message = " + intent.getStringExtra("message"));

  }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值