Android实现AppWidget、Broadcast静态注册

本篇博客是基于我上一篇博客继续修改的,详情请看Android实现AppWidget、Broadcast动态注册

开发工具:Andorid Studio 1.3

运行环境:Android 4.4 KitKat

工程内容

  1. 主界面可以编辑广播的信息,点击发送广播的按钮发送广播
  2. 主页面上设置一个按钮进行广播接收器的注册与注销
  3. 广播接收器若已被注册,发送的广播信息能够及时更新桌面上Widget上文字内容
  4. 点击Widget可以跳转回主页面

代码实现

静态注册MyBroadcastReceiver,intent-filter中的action标签内容对应广播时的intent中的内容,必须对应才能成功接收到广播

<receiver
android:name=".MyBroadcastReceiver">
<intent-filter>
<!-- <action android:name="@string/sysu"/> -->
<action android:name="SYSU_ANDROID_2015_2"/>
</intent-filter>
</receiver>

注释掉之前使用的动态注册的函数,为按钮SEND设置可见相应,只有逻辑上注册了的按钮才会显示,否则默认不显示按钮SEND

regBroCast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isRegister){
//unregisterReceiver(myBroadcastReceiver);
regBroCast.setText(getResources().getString(R.string.regBroadcast));
isRegister = false;
send.setVisibility(View.GONE);
} else {
//registerReceiver(myBroadcastReceiver, new IntentFilter());
regBroCast.setText(getResources().getString(R.string.unRegBroadcast));
isRegister = true;
send.setVisibility(View.VISIBLE);
}
}
});

按钮SEND的响应不变,发送一个intent,命名中和静态注册的intent-filter中保持一致,加入message内容发送广播

send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Intent intent = new Intent(getResources().getString(R.string.sysu));
Intent intent = new Intent("SYSU_ANDROID_2015_2");
intent.putExtra("message", mainEditText.getText().toString());
sendBroadcast(intent);
Log.d("hint","click send");
}
});

效果图

初始化界面->输入hello world2->点击注册弹出SEND按钮->点击SEND->Widget界面出现hello world2文字

一些总结

  1. 在string.xml文件中定义的常量给intent发送广播和给MyBroadcastReceiver静态注册时使用,但是MyBroadcastReceiver接收不到广播,只能在代码中写死了静态常量才有效
  2. 上一个问题找到原因的方法是:Log.d(“hint”, “click send”)找到问题所在
  3. 有两个app,其中一个发出广播两个都可以接收得到,原因是两个的inter-filter都相同,为不同的app定制intent-filter即可

工程下载

传送门:下载

Android实现AppWidget、Broadcast静态注册的更多相关文章

  1. Android中的BroadCast静态注册与动态注册

    1.静态注册 新建MyBroadcast类继承BroadcastReceiver,实现onReceive方法 /** * Author:JsonLu * DateTime:2015/9/21 16:4 ...

  2. Android学习笔记--Broadcast, BroadcastReceiver(广播)

    参考资料:http://www.cnblogs.com/playing/archive/2011/03/23/1992030.html 在 Android 中使用 Activity, Service, ...

  3. BroadcastReceiver的两种注册方式之------静态注册

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  4. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

  5. Android实现AppWidget、Broadcast动态注册

    Android实现AppWidget.Broadcast动态注册 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 主界面可以编辑广播的信息,点 ...

  6. Android Broadcast Receiver注册

    之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...

  7. [Android Pro] 有关Broadcast作为内部类时注册的一些问题

    很经常Broadcast都会写成一个Activity或者Service的内部类.这时候的注册和普通有点小区别. 有两种情况 1.假如是再Manifest文件里面静态注册的话,需要注意. ex: < ...

  8. Android 8.0的平台上,应用不能对大部分的广播进行静态注册

    引言在Android 8.0的平台上,应用不能对大部分的广播进行静态注册,也就是说,不能在AndroidManifest文件对有些广播进行静态注册,这里必须强调是有些广播,因为有些广播还是能够注册的. ...

  9. Android(java)学习笔记173:BroadcastReceiver之 静态注册 和 动态注册

    1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...

随机推荐

  1. 在C++中调用DLL中的函数 (3)

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  2. keepalive实现web服务器active/passive

    https://github.com/acassen/keepalived/blob/v1.2.13/doc/keepalived.conf.SYNOPSIS http://ngyuki.hatena ...

  3. 关于enum的那些事儿

    自从当年明月的<明朝的那些事儿>爆红之后,以***那些事儿命名的文章便层出不穷.个人认为,这样的命名通俗但具有吸引力,容易接地气.哈哈,所以我也写了几篇以<***那些事儿>的文 ...

  4. 查找Safari相关迹证

    日前有取证的同好提及Safari,想了解详细步骤,因而在此再补充说明相关. 除了Winodws外,Mac OS X也有为数不少的使用者,以下便以OS X自带的Safari浏览器为例,来查看有哪些重要迹 ...

  5. Something wrong with EnCase index search in Unallocated area

    hi, My EnCase version is v7 and I found a terrible issue about index search in Unallocated area. Wit ...

  6. javascript事件机制

    ① javascript绑定事件的方式 http://blog.iderzheng.com/dom-javascript-event-binding-comparison/ ② javascript事 ...

  7. CSS3 图片悬浮缩放效果

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. Openvz特点和分析

    OpenVZ是开源软件,是基于Linux平台的操作系统级服务器虚拟化解决方案.OpenVZ采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,Virutozzo是SWsoft公司提供的商业 ...

  9. PHP基础笔记汇总

    一.PHP简介PHP:超文本预处理器(译者注:PHP: Hypertext Preprocessor,递归命名)PHP 是一种服务器端的脚本语言,类似 ASPPHP 文件的文件后缀是 ".p ...

  10. [leetcode]_Search Insert Position

    题目:查找元素target插入一个数组中的位置. 代码: public int searchInsert(int[] A, int target) { int len = A.length; int ...