Использование приемника вещания в качестве внутреннего класса деятельности с регистрацией манифеста
У меня есть деятельность, в которой у меня есть приемник вещания (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. Не уверен, будет ли это работать для манифеста, но попробуйте и посмотрите, работает ли он.
редактировать
Это невозможно, если внутренний класс не является статическим, поскольку манифест выполняет маршалирование всех объектов под нагрузкой, а не по требованию. Класс, в котором находится подкласс, не существует во время разрешения получателя.
Смежный вопрос: возможно ли определить широковещательный приемник как внутренний класс в файле манифеста?