文档章节

广播(有序)跨应用发送简单举例

初来小修
 初来小修
发布于 2016/02/19 20:52
字数 708
阅读 91
收藏 0

效果图示例:

 

 

 

 

//负责发送广播的应用

 

 

1、布局只有一个发送广播按钮

 

 

 

2、在配置清单里添加权限(自定义)

 

代码

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.broadcast"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
        
    <!-- 自定义一个权限 -->
    <permission android:name="com.example.permission.MyReceiver"/>

    <uses-permission android:name="com.example.permission.MyReceiver"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        
    </application>
</manifest>

 

 

3、MainActivity.java类

 

代码

 public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
 
 //发送广播按钮事件监听
 public void sendBroad(View view) {
  Intent intent = new Intent();
  
  //这里setAction中的action是别的应用接收本应用发送的广播的action(相当于暴露给其他应用的路径)
  intent.setAction("com.example.broadcast.MyReceiver");
  
    /*
   * intent.putExtra("data", "无序广播发送的数据"); 
   *sendBroadcast(intent);//发送
   */
   
  // 有序广播的发送
  intent.putExtra("data", "有序广播发送的数据");
  
  // 有序广播发送的权限在配置清单里自定义(第二个参数)
  //发送广播的方法sendOrderedBroadcast
  sendOrderedBroadcast(intent, "com.example.permission.MyReceiver");
 }
}

 

 

 

 

==================================================

 

 

 

发送广播端做好后做另外应用的广播接收端(跨应用)

//另外的应用(广播接收者)有2个有序广播接收者 把接收到的结果打印到日志猫

 //广播接收者类都要继承BroadCastReceiver类

 

4、在配置清单里静态注册2个广播接收者和添加权限(该权限是发送广播端自定义的权限)

 

 

配置清单代码

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.orderbroadcast"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
        
    <!-- 另外一个应用自定义的权限 -->
    <uses-permission android:name="com.example.permission.MyReceiver"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        
        <!-- priority有序广播范围是-1000到1000 数值越大优先权越高 -->
        <receiver android:name=".OrderBroadOne">
            <intent-filter android:priority="1">
                <action android:name="com.example.broadcast.MyReceiver"/>
            </intent-filter>
        </receiver>

        <receiver android:name=".OrderBroadTwo">
            <intent-filter android:priority="2">
                <action android:name="com.example.broadcast.MyReceiver"/>
            </intent-filter>
        </receiver>
        
    </application>
</manifest>

 

 

 

 

 

5、配置清单配置好后编写源文件有2个类(2个有序广播接收者)一个OrderBroadOne.java类一个OrderBroadTwo.java类

 

 

OrderBroadOne.java类

 

代码

 public class OrderBroadOne extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  String data = intent.getStringExtra("data");
  Log.i("data", "OrderBroadOne data = " + data);//把结果打印到日志猫
 }
}

 

 

 

 

OrderBroadTwo.java类

 

代码

 public class OrderBroadTwo extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  String data = intent.getStringExtra("data");
  Log.i("data", "OrderBroadTwo data = " + data);//把结果打印到日志猫
 }
}

 

 

 

 

6、最后先运行广播接收者的应用(部署好广播接收者),在运行广播发送端发送广播 最后在日志猫查看打印信息

 

 

© 著作权归作者所有

初来小修
粉丝 4
博文 117
码字总数 80711
作品 0
广州
私信 提问
使用广播-BroadcastReceiver最详细解析

女孩:BroadcastReceiver是什么呀? 男孩:Broadcast是广播的意思,在Android中应用程序之间的传输信息的机制,BroadcastReceiver是接收广播通知的组件,广播和广播接收器是Android中需要了解...

达叔小生
2018/07/31
0
0
四大组件之广播接收器-Broadcast Receiver

前言 安卓四大组件包括Activity、Service、BroadcastReceiver和ContentProvider。本文主要讲解广播接受者(BroadcastReceiver)。广播是一种广泛运用的在应用程序之间传输信息的机制,而Broad...

u014527323
2017/03/15
0
0
安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题

4.2.3 创建/使用广播接收器 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.2.3.1 结合导出属性和意图过滤器设置(用于接收...

apachecn_飞龙
2018/03/16
0
0
Broadcast 知识梳理(1) - BroadcastReceiver 基本概念

一、基本概念 1.1 实现广播接收者 首先,我们需要创建一个广播接收者,继承于并重写它的方法。 在创建完接收者之后,还需要进行注册,告诉系统有这个监听者。广播注册的方式分为:静态注册和...

泽毛
01/02
0
0
总结全面的广播机制

BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 ......

天高空
2012/03/20
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

二、Docker

1、Docker - The TLDR(Too Long,Don't Read,Linxu 终端工具 ) Docker是在Linux和Windows上运行的软件。它创建、管理和编排容器。该软件以开源方式开发,在Github上作为Moby开源项目的一部分。...

倪伟伟
24分钟前
2
0
Python猫荐书系列之七:Python入门书籍有哪些?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python 技术学习群里进来了几位比较特殊的同学:一...

豌豆花下猫
今天
5
0
Guava RateLimiter限流源码解析和实例应用

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高...

算法之名
今天
13
0
国产达梦数据库与MySQL的区别

背景 由于项目上的需要,把项目实现国产化,把底层的MySQL数据库替换为国产的达梦数据库,花了一周的时间研究了国产的数据库-达梦数据库,它和MySQL有一定的区别,SQL的写法也有一些区别。 ...

TSMYK
今天
2
0
老也有错?35岁程序员是一道坎,横亘在每个技术职场人的心中

随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后,都会开始思考5年、10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛...

我最喜欢三大框架
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部