清单文件中是否可以将广播接收器定义为内部类?

我想在我的主要活动中创build一个广播接收器作为内部类。 但我有定义在清单xml文件广播接收机的问题,因为android找不到它。

码:

public class MyActivity extends Activity{ ... public class Receiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { .... } } ... } 

performance:

 <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> 

我试着用:

  • .org.danizmax.myapp.MyActivity $接收器
  • org.danizmax.myapp.MyActivity $接收器
  • .MyActivity $接收器
  • 。接收机

我看到其他人也有类似的问题,但没有find任何答案。

那可能吗? 如果没有,使用广播接收机的更好方法是什么?

谢谢!

对的,这是可能的。

接收者android:name属性应该看起来像.path.to.class.MyClass$MyInnerClass

如果你想使用非静态的内部类,你不能通过AndroidManifest.xml来完成。 但是,您可以在Android中dynamic注册BroadcastReceiver: Receiver作为内部类

使用BroadcastReceiver的更好方法是将其设为自己的类。 这样的代码组织得更好,你可以重复使用它。