我想在我的主要活动中创建一个广播接收器作为内部类。 但我在清单xml文件中定义广播接收器时遇到问题, 因为android无法找到它。
代码:
public class MyActivity extends Activity{
...
public class Receiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
....
}
}
...
}
清单:
<receiver android:name=".org.danizmax.myapp.MyActivity$Receiver" android:enabled="true">
<intent-filter>
<action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
</intent-filter>
</receiver>
我尝试过:
我看到其他人也有类似的问题,但没有找到任何答案。
有可能吗?如果没有,有什么更好的方式来使用广播接收器?
谢谢!
答案 0 :(得分:70)
是的,这是可能的。
接收者android:name属性应该看起来像.path.to.class.MyClass$MyInnerClass
答案 1 :(得分:12)
如果您希望使用非静态内部类,则无法通过AndroidManifest.xml执行此操作。但是,您可以动态注册BroadcastReceiver: Receiver as inner class in Android
答案 2 :(得分:-2)
使用BroadcastReceiver
的更好方法是将其设为自己的类。这样代码组织得更好,你可以重用它。