sendBroadcast(new Intent(Config.ACTION_PRINT),”com.qf.permission.print”);先判断应用有没有对应的权限 再去判断有没有对应的action两者都对应了才能进行接收      一个应用声明了权限 另一个应用使用了该权限并且action(频道相同)则可以接收广播

应用4发广播应用4里边对应频道的接受者都可以接受   应用5使用了应用4声明的权限并且接受者的action(频道)一直因此也可以接受4的广播   5发广播4也能接受 除非自己设置不接受其他应用的广播(见4的配置文件)  5也可以指定接受者的包名固定发给某个应用(见5的MainActivity.java)

配置文件里可以设置接受者的优先级越高先接受(见4配置文件)

  1. package com.qf.broadcastreceiver04;
  2.  
  3. public class Config {
  4.  
  5. //声明广播的Action
  6. public static final String ACTION_PRINT="com.qf.broadcast.print";
  7. }

4_Config.java

  1. package com.qf.broadcastreceiver04;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.view.View;
  7.  
  8. public class MainActivity extends Activity {
  9.  
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.activity_main);
  14. }
  15.  
  16. public void send1(View v){
  17. //发送打印广播: 有序广播,且带接收此广播的权限(需要在manifest文件中声明和使用)
  18. //sendOrderedBroadcast(new Intent(Config.ACTION_PRINT),"com.qf.permission.print");
  19.  
  20. //带有权限发送广播
  21. sendBroadcast(new Intent(Config.ACTION_PRINT), "com.qf.permission.print");
  22.  
  23. //sendBroadcast(new Intent(Config.ACTION_PRINT));
  24. }
  25.  
  26. }

4_MainActivity.java

  1. package com.qf.broadcastreceiver04;
  2.  
  3. import java.util.Date;
  4.  
  5. import android.content.BroadcastReceiver;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.util.Log;
  9.  
  10. public class MyReceiver01 extends BroadcastReceiver {
  11.  
  12. @Override
  13. public void onReceive(Context context, Intent intent) {
  14. // TODO Auto-generated method stub
  15. Log.i("debug", "--MyReceiver01---onReceive--"+new Date());
  16. }
  17.  
  18. }

4_MyReceiver01.java

4的另外两个和01一样

4的配置文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.qf.broadcastreceiver04"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10.  
  11. <!-- 定义权限 -->
  12. <permission android:name="com.qf.permission.print" />
  13.  
  14. <!-- 使用权限 -->
  15. <uses-permission android:name="com.qf.permission.print" />
  16.  
  17. <application
  18. android:allowBackup="true"
  19. android:icon="@drawable/ic_launcher"
  20. android:label="@string/app_name"
  21. android:theme="@style/AppTheme" >
  22. <activity
  23. android:name="com.qf.broadcastreceiver04.MainActivity"
  24. android:label="@string/app_name" >
  25. <intent-filter>
  26. <action android:name="android.intent.action.MAIN" />
  27.  
  28. <category android:name="android.intent.category.LAUNCHER" />
  29. </intent-filter>
  30. </activity>
  31.  
  32. <!-- 注册广播接收器 -->
  33. <receiver
  34. android:name="com.qf.broadcastreceiver04.MyReceiver01"
  35. android:permission="com.qf.permission.print" >
  36. <intent-filter>
  37. <action android:name="com.qf.broadcast.print" />
  38. </intent-filter>
  39. </receiver>
  40. <receiver
  41. android:name="com.qf.broadcastreceiver04.MyReceiver02"
  42. android:permission="com.qf.permission.print" >
  43. <intent-filter android:priority="80" >
  44. <action android:name="com.qf.broadcast.print" />
  45. </intent-filter>
  46. </receiver>
  47.  
  48. <!-- android:permission 设置接收的广播是带有权限的(发送广播端必须使用此权限)
  49. android:exported="false" 不接收外部应用发送的广播 -->
  50. <receiver
  51. android:name="com.qf.broadcastreceiver04.MyReceiver03"
  52. android:permission="com.qf.permission.print"
  53. android:exported="false" >
  54.  
  55. <!-- 通过priority属性设置接收广播的优先级(范围: -1000~1000) -->
  56. <intent-filter android:priority="100" >
  57. <action android:name="com.qf.broadcast.print" />
  58. </intent-filter>
  59. </receiver>
  60. </application>
  61.  
  62. </manifest>

AndroidManifest.xml

  1. package com.qf.broadcastreceiver05;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.view.View;
  7.  
  8. /**
  9. * 接收04应用中发送的广播
  10. * @author apple
  11. *
  12. */
  13. public class MainActivity extends Activity {
  14.  
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. }
  20.  
  21. public void sendBroadcast(View v){
  22. Intent intent=new Intent("com.qf.broadcast.print");
  23. intent.setPackage("com.qf.broadcastreceiver04"); //设置可以接收此广播的应用的包名
  24.  
  25. sendBroadcast(intent);
  26. }
  27.  
  28. }

5_MainActivity.java

5的recerver也是一样的

5的配置文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.qf.broadcastreceiver05"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10.  
  11. <uses-permission android:name="com.qf.permission.print"/>
  12.  
  13. <application
  14. android:allowBackup="true"
  15. android:icon="@drawable/ic_launcher"
  16. android:label="@string/app_name"
  17. android:theme="@style/AppTheme" >
  18. <activity
  19. android:name="com.qf.broadcastreceiver05.MainActivity"
  20. android:label="@string/app_name" >
  21. <intent-filter>
  22. <action android:name="android.intent.action.MAIN" />
  23.  
  24. <category android:name="android.intent.category.LAUNCHER" />
  25. </intent-filter>
  26. </activity>
  27.  
  28. <receiver android:name="com.qf.broadcastreceiver05.MyReceiver01">
  29. <intent-filter>
  30. <action android:name="com.qf.broadcast.print"/>
  31. </intent-filter>
  32. </receiver>
  33.  
  34. </application>
  35.  
  36. </manifest>

5_AndroidManifest.xml

两个应用之间传递广播的规则 Broadcast的更多相关文章

  1. 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制

    原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...

  2. spring boot 之如何在两个页面之间传递值(转)

    原文地址:spring boot 之如何在两个页面之间传递值 问题:页面之间的跳转,通常带有值的传输,但是,在现在比较流行的SPRING MVC WEB 开发模型中,设计机制导致页面之间的直接接跳转和 ...

  3. 用WM_COPYDATA消息来实现两个进程之间传递数据

    文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有   1.使用内存映射 ...

  4. 两个activity之间传递数据用startActivityForResult方法。

    package com.example.testactivityresquest; import android.app.Activity; import android.content.Intent ...

  5. 如何在两个activity之间传递bitmap

    1.需求 在项目开发过程中,打印小票前需要添加打印预览功能,交易数据在打印前转成bitmap然后直接打印,为了显示这个bitmap需要将其传给显示activity. 2.解决方法 把bitmap存储为 ...

  6. WinForm 中两个窗口之间传递数据

    方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...

  7. golang 与 c语言 之间传递指针的规则提案

    https://go.googlesource.com/proposal/+/master/design/12416-cgo-pointers.md https://github.com/golang ...

  8. 两个Fragment之间传递数据

    1.第一个Fragment BlankFragment blankFragment = new BlankFragment();Bundle bundle = new Bundle();bundle. ...

  9. Linux 两台服务器之间传递文件

    参考: https://www.cnblogs.com/clovershell/p/9870603.html linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器   // 假设远程服务器 ...

随机推荐

  1. Redis等缓存数据库为什么访问会比较快?

    首先,我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 memcached(简称mc).首先,用户访问mc,如果未命 ...

  2. Microsoft Dynamics CRM 2011 安装完全教程

    作者:卞功鑫,转载请保留.http://www.cnblogs.com/BinBinGo/p/4302612.html 环境介绍 WINDOWS 2008 R2 Datacenter Microsof ...

  3. 第10课 C++中的新成员

    1. 动态内存分配 (1)C++通过new关键字进行动态内存申请,是以类型为单位来申请空间大小的 (2)delete关键字用于内存释放 ▲注意释放数组时要加[],否则只释放这个数组中的第1个元素. [ ...

  4. 使用javascript连接mqtt协议(自动重连问题)

    因为之前是在rabbitmq的插件"RabbitMQ Web MQTT plugin "中看到使用了mqttws31.js的实例,由于对mqttws31不了解,网上下载了连接成功, ...

  5. Docker集群管理(三)—— docker swarm mode基础教程

    docker从1.12版(及后续版本)集成了swarmkit.可以方便的实现docker集群.它有哪些特点呢: 集成了集群功能 分散设计:manager和worker两种节点. 声明式服务模式 可伸缩 ...

  6. PHP mysqli_autocommit() 函数

    定义和用法 mysqli_autocommit() 函数开启或关闭自动提交数据库修改. 提示:请查看 mysqli_commit() 函数,用于提交指定数据库连接的当前事务.请查看 mysqli_ro ...

  7. spring boot 静态变量注入配置文件

    spring 静态变量注入 spring 中不支持直接进行静态变量值的注入,我们看一下代码: @Component(value = "KafkaConfig") @Configur ...

  8. mybatis Dynamic SQL动态 SQL

    动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格 ...

  9. js中在一个函数中引用另一个函数中的函数,可以这么做

    在另一个函数中,将需要使用的函数绑定在window下 // UEditor $(function () { window.ue = UE.getEditor('editor', { // ue即可成为 ...

  10. 本地同时安装python2和python3时pip报错

    引言: 安装完成后,想测试一下两个版本的pip是否都可以正常工作,结果python3的能正常工作,但是pip2 --version就会报错,报错信息如下: Traceback (most recent ...