Можно ли определить получателя вещания как внутренний класс в файле манифеста?
Я хочу создать приемник вещания как внутренний класс в моей основной деятельности. Но у меня проблемы с определением приемника вещания в XML-файле манифеста, потому что Android не может его найти.
Код:
public class MyActivity extends Activity{
...
public class Receiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
....
}
}
...
}
Manifest:
<receiver android:name=".org.danizmax.myapp.MyActivity$Receiver" android:enabled="true">
<intent-filter>
<action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
</intent-filter>
</receiver>
Я пробовал с:
- .org.danizmax.myapp.MyActivity $ Receiver
- org.danizmax.myapp.MyActivity $ Receiver
- .MyActivity $ Receiver
- .Получатель
Я видел, что у других тоже были похожие проблемы, но не нашел ответов.
Так возможно ли это? Если нет, то как лучше использовать широковещательные приемники?
Спасибо!
3 ответа
Да, это возможно.
Атрибут приемника android:name должен выглядеть так .path.to.class.MyClass$MyInnerClass
Если вы хотите сделать это с нестатическим внутренним классом, вы не можете сделать это через AndroidManifest.xml. Однако вы можете динамически зарегистрировать BroadcastReceiver: Receiver как внутренний класс в Android
Лучший способ использовать BroadcastReceiver
было бы сделать его своим собственным классом. Таким образом, код лучше организован, и вы можете использовать его повторно.