我写了一个扩展BroadcastReceiver
的类,并在清单中声明了一个Receiver。
有一个红色下划线表示预期为class
或interface
"。
我的课程定义如下:
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链接,并尝试/检查了以下所有内容,其中没有一个有效:
android:name=".MyBroadcastReceiver" android:name="com.claire.myapp.MyBroadcastReceiver" android:name="MyBroadcastReceiver"
有没有人知道为什么这些都没有在清单中得到承认?或者为什么Android Studio确信MyBroadcastReceiver
不是一个类?
非常感谢你!
答案 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>