昨天写的是广播接收端的一些操作,

  今天学的是广播的发送,上节介绍的标准广播和有序广播指的是发送端发送后,接收端的广播形式。

  既然要发送,那就可以自定义发送广播:

  

  把EditText的内容拿出来广播。

  

  新建一个活动,并在AndroidManifest.xml里面注册好,然后调整为主活动

  

因为牵扯到复用的问题,就直接定义了一个单独的类来装这些自定义的频道,因为这是自定义的广播嘛。

如果嫌麻烦,就直接写字符串,频道一般是 (包名.自己的频道)

好啦,现在就发送了啊,

接着就新建一个项目吧,用来接收这个项目发出的广播。

活动那边不管,直接用静态注册,

第一步。新建类继承BroadcastReceiver

package com.example.myintentfilterpractice;

public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}

第二步。AndroidManifest注册接收器

<receiver
android:name=".MessageReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.example.myintentfilter.SEND_MSG" />
</intent-filter>
</receiver>

第三步。在新建类中接收上一个项目发出的广播

package com.example.myintentfilterpractice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast; public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ActionCoast.Action_SEND_MSG.equals(action)) {
Log.e("MessageReceiver","actions == "+action);
String stringExtra = intent.getStringExtra(ActionCoast.KEY_CONTENT);
Log.e("Content","Content == "+stringExtra);
Toast.makeText(context, ""+stringExtra, Toast.LENGTH_SHORT).show();
} }
} 好,然后就是测试。。。(挺好,测试成功)
广播的内容在Run里能输出,那一些有用的信息,也可以用广播的形式跨程序操作了。

接着就是了解有序广播了

有序广播的东西都是分级别进行接收,级别分别是-1000到1000

设置级别后,级别高的优先接收到广播,然后还可以进行修改,或者终止广播,让后面级别低的接收者不能接收。

测试有序广播的方法,分别写三个静态注册的类(分为三个级别,至于如何修改级别,得到AndroidManifest中设置)

然后在AndroidManifest.xml中:

至于:

com.example.myintentfilter.ORDERED_SEND_MSG
这个是自定义的频道,在自己定义的常量中写了,不过在AndroidManifest里的是不能用常量的,得去这里拿

然后就是新建一个活动来测试有序广播:

给有序广播设置好频道,这个就可以使用常量来表示了。

然后发送有序广播可以写两个参数,也可以写七个参数。

两个参数是只传递意向和权限,

七个参数的是:

现在只用到了157,第七个是为了给后面的接收者传递数据的

然后向后面传递,可以很形象的看出来,老板发通知,给相关部门经理,然后经理看了,修改好后再给自己的下级,下级再修改。。。

然后就可以测试了。。。(几个小时以后,,测试成功了,写了大半天,脑子嗡嗡的,忘了25(8.0)以后的静态广播都是隐式的,终于解决了)

好,接着下面的内容;

给其他项目发送广播

模拟器是一个A项目里的,编辑器现在是B项目的Run窗口,可以看出,广播的到位了

那我们现在想B只有拿到权限才能接收A项目的广播。

在A(MyIntentFilter)里面设置好权限,然后让有序广播发送,这里牵扯到Manifest的问题

默认的我的机器是找不到的,所以我重新创建了一个Manifest类

并且给它设置权限(自己写好了Manifest后)第一个本项目的Manifest就可以用了

加了权限后,B项目也就是(MyIntentFilterPractice)就不能接收A项目的广播了


那怎么才能接收呢,就得添加权限许可;

在B项目的AndroidManifest.xml里添加

此时的项目就可以:

只有添加了权限的才可以接收A项目的广播

接下来的反过来,只有A项目添加了权限才可以发送广播到B项目:

在A项目中:加一句权限许可

B项目中自定义权限,然后给接收器Receiver设置权限

仍然可以广播:

如果A项目里的权限许可不写,就无法广播到B项目。。。

今天的就到这,Manifest的特殊情况,就是自己创建一个常量类。

有事比较充实的一天,广播到这就完啦,比较完整 ,很多地方都搞不过来,

版本问题总是反应不过来,以后尽量用动态注册吧,例题用静态是写法比较方便,毕竟只创三个差不多的类,然后AndroidManifest注册就好。

加油,一天吃透一点知识吧。

Android 程序间的广播和Manifest找不到(解决方法)的更多相关文章

  1. Cocos2d-x 3.2编译生成Android程序出错Error running command, return code: 2的解决方法

    用Cocos2d-x 3.2正式版创建项目,结果使用cocos compile -p android编译生成APK程序,结果悲剧了,出现以下错误. Android NDK: Invalid APP_S ...

  2. Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...

  3. Android Studio2.x版本无法自动关联源码的解决方法

    Android Studio2.x版本无法自动关联源码的解决方法 在学习android开发过程中,对于一个不熟悉的类,阅读源码是一个很好的学习方式,使用andorid studio开发工具的SDK M ...

  4. android Run模式也会出现"Waiting for debugger"的解决方法

    android Run模式也会出现"Waiting for debugger"的解决方法 出现“waiting for debugger”窗口是在debug模式下运行出现的.但是, ...

  5. 【转】 VC++ 关闭程序后任务管理器进程中进程仍然存在的解决方法

    转载出处:http://blog.csdn.net/zac_sian/article/details/50809084 可以从以下两个方面进行查找! 1.程序开启了进程,进程中使用了while(1), ...

  6. win7 64位平台编译的程序在XP 32位平台无法运行的解决方法

    win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...

  7. android 程序中res/values-v14/styles.xml报错的解决办法

    从旧的ADT迁移的新的ADT时, android 程序中res/values-v14/styles.xml报错: error: Error retrieving parent for item: No ...

  8. Android程序中有多个Activity时的可全部退出方法

    下面是代码.该方法的原理是用一个list记录每次启动的acitivity,在退出时候循环退出改list中保存的acitivity,这样就做到了所有的acitivity完美退出.   先写一个类继承Ap ...

  9. Android通过Chrome Inspect调试WebView出现404页面的解决方法

    无论是调试Web页面还是调试Hybrid混合应用,只要是调试Android的webview,都需要使用Chrome://inspect进行调试.但是国内开发者会出现404 Not Found错误: 解 ...

随机推荐

  1. matlab 打包exe

    mcc -m gui_abc.m https://blog.csdn.net/hujiameihuxu/article/details/53525373 deploytool app compiler

  2. java 面向对象(十一):关键字:package/import

    1.1 使用说明: * 1.为了更好的实现项目中类的管理,提供包的概念 * 2.使用package声明类或接口所属的包,声明在源文件的首行 * 3.包,属于标识符,遵循标识符的命名规则.规范(xxxy ...

  3. 机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD

    PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...

  4. 微博大数据即席查询(OLAP)引擎实践

    前言 适用于 即席查询 场景的开源查询引擎有很多,如:Elasticsearch.Druid.Presto.ClickHouse等:每种系统各有利弊,有的擅长检索,有的擅长统计:实践证明,All In ...

  5. 重装win7时遇到点小问题

         最近装系统的时候有个头疼的事,事情的起因是这样的,我在工作的时候用的win7,破解的时候各种工具都破解不了,说是有未分配的盘符.并且,当时装的是没更新的win7,工作上要用到ie11只能在w ...

  6. Kafka 信息整理

    请说明什么是传统的消息传递方法? 传统的消息传递方法包括两种: ·排队:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人. ·发布-订阅:在这个模型中,消息被广播给所有的用户. 为 ...

  7. python怎么自学?今日头条技术大佬的真实经历分享

    大家好,我是武州,27岁,目前在字节跳动担任Python后端工程师一职. (摆拍一下,假装是保安) 在开始今天的文章之前,不知道你们有没有遇到过这样的问题: 大学没学到什么实质技术,毕业后找不到高薪的 ...

  8. NPOI Excel设置样式

    在表格导出时,会碰到样式修改的问题,作如下简单归纳: //创建行样式ICellStyle style = workbook.CreateCellStyle();//前景色                ...

  9. Jenkins链接Kubernetes集群

    Jenkins CI/CD介绍 持续构建与发布是我们工作中必不可少的一个步骤,目前大多公司都采用Jenkins集群来搭建符合需求的CI/CD流程,然而传统的Jenkins Slave一主多从方式会存在 ...

  10. 题解 洛谷 P6349 【[PA2011]Kangaroos】

    先考虑对题目进行转化,我们称两个区间有交集为这两个区间能匹配,每个询问就是在序列中最长能连续匹配的长度. 对序列中的一个区间\([l,r]\)和询问的一个区间\([L,R]\),若满足\(L \leq ...