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

dan*_*max 40 android broadcastreceiver android-manifest

我想在我的主要活动中创建一个广播接收器作为内部类.但我在清单xml文件中定义广播接收器时遇到问题,因为android无法找到它.

码:

public class MyActivity extends Activity{
    ...

    public class Receiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            ....
        }

    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

表现:

<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>
Run Code Online (Sandbox Code Playgroud)

我尝试过:

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

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

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

谢谢!

Che*_*mon 72

对的,这是可能的.

接收器android:name属性应该是这样的 .path.to.class.MyClass$MyInnerClass

  • 内部类必须是静态的...... (80认同)
  • 还要记住&lt;receiver&gt;上的`android:enabled =“ true”`。 (2认同)

Ber*_*ink 12

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


归档时间:

查看次数:

28795 次

最近记录:

13 年,4 月 前