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

时间:2010-12-08 20:29:14

标签: android android-manifest broadcastreceiver

我想在我的主要活动中创建一个广播接收器作为内部类。 但我在清单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>

我尝试过:

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

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

有可能吗?如果没有,有什么更好的方式来使用广播接收器?

谢谢!

3 个答案:

答案 0 :(得分:70)

是的,这是可能的。

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

答案 1 :(得分:12)

如果您希望使用非静态内部类,则无法通过AndroidManifest.xml执行此操作。但是,您可以动态注册BroadcastReceiver: Receiver as inner class in Android

答案 2 :(得分:-2)

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