其他分享
首页 > 其他分享> > android – 使用广播接收器作为具有清单注册的活动内部类

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

作者:互联网

我有一个活动,我有一个广播接收器(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>

请指教

解决方法:

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

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

编辑

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

相关问题:Is it possible to define a broadcast receiver as an inner class in manifest file?

标签:android,exception,broadcastreceiver,classnotfound
来源: https://codeday.me/bug/20190826/1726591.html