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配置文件)

 package com.qf.broadcastreceiver04;

 public class Config {

     //声明广播的Action
public static final String ACTION_PRINT="com.qf.broadcast.print";
}

4_Config.java

 package com.qf.broadcastreceiver04;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void send1(View v){
//发送打印广播: 有序广播,且带接收此广播的权限(需要在manifest文件中声明和使用)
//sendOrderedBroadcast(new Intent(Config.ACTION_PRINT),"com.qf.permission.print"); //带有权限发送广播
sendBroadcast(new Intent(Config.ACTION_PRINT), "com.qf.permission.print"); //sendBroadcast(new Intent(Config.ACTION_PRINT));
} }

4_MainActivity.java

 package com.qf.broadcastreceiver04;

 import java.util.Date;

 import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log; public class MyReceiver01 extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("debug", "--MyReceiver01---onReceive--"+new Date());
} }

4_MyReceiver01.java

4的另外两个和01一样

4的配置文件

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qf.broadcastreceiver04"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <!-- 定义权限 -->
<permission android:name="com.qf.permission.print" /> <!-- 使用权限 -->
<uses-permission android:name="com.qf.permission.print" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.qf.broadcastreceiver04.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- 注册广播接收器 -->
<receiver
android:name="com.qf.broadcastreceiver04.MyReceiver01"
android:permission="com.qf.permission.print" >
<intent-filter>
<action android:name="com.qf.broadcast.print" />
</intent-filter>
</receiver>
<receiver
android:name="com.qf.broadcastreceiver04.MyReceiver02"
android:permission="com.qf.permission.print" >
<intent-filter android:priority="80" >
<action android:name="com.qf.broadcast.print" />
</intent-filter>
</receiver> <!-- android:permission 设置接收的广播是带有权限的(发送广播端必须使用此权限)
android:exported="false" 不接收外部应用发送的广播 -->
<receiver
android:name="com.qf.broadcastreceiver04.MyReceiver03"
android:permission="com.qf.permission.print"
android:exported="false" > <!-- 通过priority属性设置接收广播的优先级(范围: -1000~1000) -->
<intent-filter android:priority="100" >
<action android:name="com.qf.broadcast.print" />
</intent-filter>
</receiver>
</application> </manifest>

AndroidManifest.xml

 package com.qf.broadcastreceiver05;

 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View; /**
* 接收04应用中发送的广播
* @author apple
*
*/
public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void sendBroadcast(View v){
Intent intent=new Intent("com.qf.broadcast.print");
intent.setPackage("com.qf.broadcastreceiver04"); //设置可以接收此广播的应用的包名 sendBroadcast(intent);
} }

5_MainActivity.java

5的recerver也是一样的

5的配置文件

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qf.broadcastreceiver05"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <uses-permission android:name="com.qf.permission.print"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.qf.broadcastreceiver05.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <receiver android:name="com.qf.broadcastreceiver05.MyReceiver01">
<intent-filter>
<action android:name="com.qf.broadcast.print"/>
</intent-filter>
</receiver> </application> </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. KCP 传输协议

    作者:韦易笑链接:https://www.zhihu.com/question/36258781/answer/98944369来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  2. 自己写的jQuery放大镜插件效果(二)(采用只有一张图片的思路)

    废话不多说,先看效果图,和上一章节用的是同一个小图片: 这个方法实现的放大有个弊端就是放大倍数设置的过大的话,会带来图片上的模糊.但是图片加载的话要比使用2张图片加载的快很多 插件代码: ; (fun ...

  3. 【基础知识六】支持向量机SVM

    开发库: libsvm, liblinear      GitHub地址 SVM难点:核函数选择 一.基本问题 找到约束参数ω和b,支持向量到(分隔)超平面的距离最大:此时的分隔超平面称为“最优超平面 ...

  4. ubuntu18.04修改时区

    运行如下命令: sudo tzselect 然后选择亚洲Asia,继续选择中国China,最后选择北京Beijing. 然后创建时区软链 sudo ln -sf /usr/share/zoneinfo ...

  5. 小朋友学C++(1)

    Hello World! 在学C++之前,最好先学习一下C语言 让我们先运行一段简单的代码,编译器可以使用 在线C++编译器 或 Xcode(苹果系统) 或Dev C++(Windows系统). #i ...

  6. mysql更新(八) 可视化工具Navicat的使用 索引

    17-索引   一.索引的介绍 数据库中专门用于帮助用户快速查找数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取. 二 .索引的作用 约束和加速查 ...

  7. IPv4检验和计算

    IP分组中的检验和仅覆盖首部,而不管数据,首部被划分为16位的段,把所有段相加,结果取反,塞进首部检验和里 在目的主机中,首部划分为16位,相加,结果肯定是16个1,然后取反,结果为0.如下 在目的主 ...

  8. Android应用程序的自动更新升级(自身升级、通过tomcat)(转)

    Android应用程序的自动更新升级(自身升级.通过tomcat) http://blog.csdn.net/mu0206mu/article/details/7204746 刚入手android一个 ...

  9. linux添加计划任务

    crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.可以用以下的 ...

  10. 7. myeclipse10反编译插件安装