接收器' class'或者'界面'清单中的预期错误

时间:2018-03-05 12:07:39

标签: java android broadcastreceiver receiver

我写了一个扩展BroadcastReceiver的类,并在清单中声明了一个Receiver。

有一个红色下划线表示预期为classinterface"。

我的课程定义如下:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "onReceive: TEST");
    }
}

这就是我在清单中宣布接收器的方式:

<receiver android:name=".MyBroadcastReceiver"  android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
    </intent-filter>
</receiver>

我已经浏览了每个具有类似问题的SO链接,并尝试/检查了以下所有内容,其中没有一个有效:

  1. 我检查过以确保我在BroadcastReceiver类中有必要的方法
  2. 我检查过以确保我在课堂上没有不匹配的括号,并且过早关闭它
  3. 我在清单中声明它时,尝试用多种方式写出该类的名称:
  4. android:name=".MyBroadcastReceiver"
    android:name="com.claire.myapp.MyBroadcastReceiver"
    android:name="MyBroadcastReceiver"
    

    有没有人知道为什么这些都没有在清单中得到承认?或者为什么Android Studio确信MyBroadcastReceiver不是一个类?

    非常感谢你!

2 个答案:

答案 0 :(得分:0)

您能否确保您正在开发的软件包是开发软件包,而不是测试软件包。 只需检查包名称,也许清单无法在您的包中找到该类。

答案 1 :(得分:0)

使用完全限定的Receiver类名,即包名

<receiver android:name="<packagename>.MyBroadcastReceiver"  android:exported="true">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
</intent-filter>