3

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

请指教

4

1 回答 1

6

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

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

编辑

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

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

于 2012-09-21T17:58:20.630 回答