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即可

工程下载

传送门:下载

更多相关文章

  1. android中file的使用实例
  2. Android新特性之CardView的简单使用
  3. Eclipse中android插件的安装
  4. Android(安卓)Studio如何删除module
  5. [Android]笔记10-单选按钮和复选框的功能与用法
  6. 安装Android(安卓)Studio没有AndroidSDK选项问题
  7. 一个Android登陆的简单实现
  8. 【Android开发学习03】短时间的音效播放实现SoundPool
  9. Android(安卓)WebView中的JavaScript代码使用

随机推荐

  1. android 显示gif图片
  2. Android编译系统模块中的LOCAL_XXX变量
  3. android Supported Media Formats
  4. Android(安卓)Essentials: Submitting Yo
  5. Android(安卓)ClickableSpan 应用实例
  6. android 汉字传拼音,英文转9键
  7. android实现图片平移、旋转、缩放
  8. android学习
  9. android设置缺省的异常捕获器
  10. [Android(安卓)GMS 认证] CTS 问题列表之