Использование приемника вещания в качестве внутреннего класса деятельности с регистрацией манифеста

У меня есть деятельность, в которой у меня есть приемник вещания (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>

пожалуйста, порекомендуйте

1 ответ

Решение

Если UpdateUIClass это внутренний класс MyActivity тогда вам нужно обратиться к этому так android:name=".MyActivity$UpdateUIClass"

Это то, как вы делаете это в макете XML. Не уверен, будет ли это работать для манифеста, но попробуйте и посмотрите, работает ли он.

редактировать

Это невозможно, если внутренний класс не является статическим, поскольку манифест выполняет маршалирование всех объектов под нагрузкой, а не по требованию. Класс, в котором находится подкласс, не существует во время разрешения получателя.

Смежный вопрос: возможно ли определить широковещательный приемник как внутренний класс в файле манифеста?

Другие вопросы по тегам