两个应用之间传递广播的规则 Broadcast

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
22     public void sendBroadcast(View v){
23         Intent intent=new Intent("com.qf.broadcast.print");
24         intent.setPackage("com.qf.broadcastreceiver04"); //设置可以接收此广播的应用的包名
25
26         sendBroadcast(intent);
27     }
28
29 }

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

时间: 2024-10-13 07:08:11

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

c#静态类在两个winform之间传递数据

public class ZTCD { public static string ZJZ = ""; public static string jg = ""; public static int CD = 0; public static string yzm = string.Empty; } //改变类中参数的值,可在两个winform窗体间传递 Form2 frm1 = new Form2(); frm1.Show(); frm1.tsslName.Text

两个form之间传递数据

Passing Data Between Forms FormData.dpr --------------------------------------------------------- program FormData; uses  Forms,  IWMain,  ServerController in 'ServerController.pas' {IWServerController: TDataModule},  Main in 'Main.pas' {formMain: TI

Android中在两个Activity之间进行数据传递

首先声明,此篇文章是我原先的CSDN上面的博客,由于种种原因,不想再使用csdn博客,于是就将其文章搬至现在的cnblog. 大家好,今天我终于开通了自己的博客,很开心能和大家共同分享我的学习经验,希望我们可以共同进步哦,废话不多说了,看一下我今天学习android遇到的一些问题和解决办法吧 首先先把我使用的eclipse的版本贴出来:adt-bundle-windows-x86-20130917 这是一个集成的版本,不需要配置SDK和ADT,但是需要手动配置JDK哦! 其实,不同版本的ecli

不同Activity之间传递线程

场景:Android由Activiy A创建Activiy B时 ,A创建的线程B中依然需要调用,这时候需要在两个activity之间传递线程的信息. 解决: 方式一:线程自己维护自己的静态句柄(比较好,降低耦合). 方式二:A将线程信息传给B,因为Activity.startActivity方法只能传递Intent对象,函数原型: @Override public void startActivity(Intent intent) { this.startActivity(intent, nu

ASP.NET MVC中的两个Action之间值的传递--TempData

一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictionary,顾名思义是一个字典类.TempData在ASP.NET MVC中的作用是:可用于在Action执行过程之间传值.简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在下一次Action执行过程中可以使用TempData中的数据. 如: 1 public Actio

两个activity之间怎么传递ArrayList&lt;HashMap&lt;String, Object&gt;&gt;

问题:两个activity之间怎么传递ArrayList<HashMap<String, Object>>,比如在跳转后的页面要得到构造器数据,可是在跳转后页面构造数据的话可能就会效率太慢导致页面跳转的时候出现黑屏现象,这样的话我们就会想在跳转前页面先得到数据,然后将ArrayList<HashMap<String, Object>>类型的数据传到另一个activity在构造适配器这样就不会出现因初始化页面时间太久而出现的黑屏现象了.但是问题出现了,怎么传递

HTML5中window.postMessage,在两个页面之间的数据传递

HTML5中window.postMessage,在两个页面之间的数据传递 2015年11月3日 8536次浏览 关于postMessage window.postMessage虽然说是html5的功能,但是支持IE8+,假如你的网站不需要支持IE6和IE7,那么可以使用window.postMessage.关于window.postMessage,很多朋友说他可以支持跨域,不错,window.postMessage是客户端和客户端直接的数据传递,既可以跨域传递,也可以同域传递. 应用场景 我只

Android之Activity之间传递对象

在很多时候,我们需要在Activity之间传递对象,比如当你点击了某列表的item,需要传递给下一个Activity该对象,那我们需要该怎么做呢? Android支持两种传递对象的方式,一种是bundle.putSerializable方式,一种是bundle.putParcelable. 那么下面我们就用一个例子来实践Activity传递对象: 1.首先建立两个类,一个Teacher类表示老师,一个Student类表示学生.内容分别如下: <span style="font-size:1

如何实现两个页面之间进行传值

参考地址:http://blog.csdn.net/hlk_1135/article/details/52809468 B/S页面间通信 HTTP是无状态的协议.Web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知该页面中的值,除非通过服务器.因此,Web页面保持状态并传递给其它页面,是一个重要的技术. Web页面之间传递数据,是Web程序的重要功能 在HTTP协议中一共有4种方法来完成这件事情: 1)URL传值:2)表单传值:3)Cookie方法:4)Session方法: 一.UR