Ответ 1
Да, это возможно.
Атрибут андроида: name должен выглядеть как .path.to.class.MyClass$MyInnerClass
Я хочу создать широковещательный приемник как внутренний класс в своей основной деятельности. Но у меня есть проблемы с определением широковещательного приемника в манифестном XML файле, потому что андроид не может его найти.
код:
public class MyActivity extends Activity{
...
public class Receiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
....
}
}
...
}
манифеста:
<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>
Я пробовал:
Я видел, что другие также имели похожие проблемы, но не нашли ответов.
Так возможно? Если нет, то какой лучший способ использовать широковещательные приемники?
Спасибо!
Да, это возможно.
Атрибут андроида: name должен выглядеть как .path.to.class.MyClass$MyInnerClass
Если вы хотите сделать это с помощью нестатического внутреннего класса, вы не сможете сделать это через AndroidManifest.xml. Однако вы можете динамически регистрировать BroadcastReceiver: Получатель как внутренний класс в Android
Лучший способ использовать BroadcastReceiver
- сделать его своим собственным классом. Таким образом, код лучше организован, и вы можете его повторно использовать.