android BroadcastReceiver的子类静态注册action失效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android BroadcastReceiver的子类静态注册action失效相关的知识,希望对你有一定的参考价值。
我更改android 4.2 中的DeskClock应用中世界时钟 widget
源代码中
用到了了RemoteView
AppWidgetProvider中重写了onUpdate方法;
而在DigitalWidgetViewsFactory extends BroadcastReceiver implements RemoteViewsFactory中
重写了onReceiver,在onCreat中静态注册action 可以实现功能
但是我在AndroidManifest.xml <Receiver android:name=".DigitalWidgetViewsFactory" 下注册就不能实现功能
action 有系统的也有自定义的 而且可以确定能发出来action 但是受不到
查了一天多资料,也问过同事,还是没解决问题
万恶的源代码 看着我好头疼 不知道google作者怎么写的 随便一个问题 都绕啊绕的
请求各位大神帮助!
运行过了啊 但是还是不行啊
这个动态注册也可以完成功能 但是清楚系统数据时 widget更新不能用了
我想试试静态的效果 结果注册不管用
Android中创建一个BroadcastReceiver
首先创建一个java类继承BroadcastReceiver类
package com.example.service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. String msg=intent.getStringExtra("msg");//获得广播信息 Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); } }
Mainactivity中添加如下语句进行数据的广播 Intent it=new Intent();
it.setAction("android.intent.action.EDIT");//自定义地址 //it.setComponent(new ComponentName("com.example.service", //此段内容用于Android8.0无法接收广播的情况参数1是自定义广播的包名,
// "com.example.service.MyBroadcastReceiver"));//参数2是自定义广播的路径
it.putExtra("msg","广播已接收"); MainActivity.this.sendBroadcast(it);
在AndroidMainfest.xml中注册,在<application></application>中添加
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.EDIT"/> </intent-filter> </receiver>
以上是关于android BroadcastReceiver的子类静态注册action失效的主要内容,如果未能解决你的问题,请参考以下文章
Android_组件_BroadcastReceiver基础
Android BroadcastReceiver广播:基本使用
Android -- BroadCastReceiver的简单使用