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 に答える