java - 安卓广播接收器 : Unable to instantiate receiver - no empty constructor

标签 java android exception broadcastreceiver instantiationexception

我的 BroadcastReceiver 有问题。如果我以这种方式在 list 中声明操作:

    <receiver android:name="com.app.activity.observer.DataEntryObserver" >
        <intent-filter>
            <action android:name= "@string/action_db_updated" />
        </intent-filter>
    </receiver>

我在 strings.xml 中的位置:

       <string name="action_db_updated">com.app.DB_UPDATED</string>

一切正常。但是如果我把它改成:

    <receiver android:name="com.app.activity.observer.DataEntryObserver" >
        <intent-filter>
            <action android:name= "com.app.DB_UPDATED" />
        </intent-filter>
    </receiver>

我有这个异常(exception),因为接收器被调用:

java.lang.RuntimeException:无法实例化接收器 com.app.activity.observer.DataEntryObserver:java.lang.InstantiationException:无法实例化类 com.app.activity.observer.DataEntryObserver;没有空构造函数

我会保留工作版本,但 Play 商店不允许我发布应用程序,因为它需要一个字符串值而不是变量@string/..

我的接收者是一个外部类,定义为:

   public class DataEntryObserver extends BroadcastReceiver{

private AppUsageLoader dLoader;


public DataEntryObserver(AppUsageLoader dLoader) {
    this.dLoader = dLoader;

    IntentFilter filter = new IntentFilter(
            ReaLifeApplication.ACTION_DB_UPDATED);
    dLoader.getContext().registerReceiver(this, filter);
}


@Override
public void onReceive(Context arg0, Intent arg1) {

    // Tell the loader about the change.
    dLoader.onContentChanged();

}

最佳答案

使该类成为静态类,否则它会被“视为”原始包含类实例的一部分。

因此:

public static class DataEntryObserver extends BroadcastReceiver{
public DeviceAdminSampleReceiver() {
            super();
        }
...

https://stackoverflow.com/a/10305338/1285325

关于java - 安卓广播接收器 : Unable to instantiate receiver - no empty constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618041/

相关文章:

c++ - 为什么要创建一个派生自 stdexcept header 的异常对象?

c++ - 来自异常声明的派生对象类型是否意外?

java - JFace 消息对话框 : inline text coloring

java - 如何修复 maven pom.xml 中不可解析的 pom 错误?

java - 我在 mysql 数据库中的表具有 utf-8 排序规则,但我仍然无法导入一些具有拉丁字符的名称

android - 在android中使用位图的问题

java - String.equals() 总是返回真

java - MPAndroid 日期格式化和解析失去精度

java - 重构庞大的类时如何使用 Spring

android - 如何知道我的应用程序需要什么 UUID?