使用广播接收器作为具有清单注册的活动内部类

Roy*_*ley 3 android exception broadcastreceiver classnotfound

我有一个活动,我有一个广播接收器(br).如果我以编程方式注册br,则接收器已注册并且工作正常.

但是,如果我在清单中注册接收器,我会收到java.lang.ClassNotFoundException.

<receiver             
        android:name=".MyActivity.UpdateUIClass"
        android:exported="false"
        >
        <intent-filter>
            <action android:name="com.mydomain.main.FILTER_UPDATE_UI" />
            <category android:name="android.intent.category.DEFAULT" />                
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

请指教

Mic*_*ley 6

如果UpdateUIClass是内部类,MyActivity那么你需要以这种方式引用它android:name=".MyActivity$UpdateUIClass"

这是您在布局XML中执行此操作的方式.不确定这是否适用于清单,但请试一试,看看它是否有效.

编辑

除非内部类是静态的,否则这是不可能的,因为清单在加载时而不是按需编组所有对象.托管子类的类在解析接收器时不存在.

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