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作者怎么写的 随便一个问题 都绕啊绕的
请求各位大神帮助!

是这样的,4.0之后,静态注册的广播必须在程序运行过才能生效!追问

运行过了啊 但是还是不行啊
这个动态注册也可以完成功能 但是清楚系统数据时 widget更新不能用了
我想试试静态的效果 结果注册不管用

参考技术A 也遇到同样的问题,方便告诉一下你是怎么解决的吗

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的简单使用

Android BroadcastReceiver

android从broadcastreceiver刷新listview

Android开发实践 BroadcastReceiver