Is it possible to define a broadcast receiver as an inner class in manifest file? [duplicate]
I want to create a broadcast receiver as an inner class in my main activity. But I have problems defining the broadcast receiver in manifest xml file, because android can't find it.
Code:
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">开发者_StackOverflow中文版
<intent-filter>
<action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
</intent-filter>
</receiver>
I tried with:
- .org.danizmax.myapp.MyActivity$Receiver
- org.danizmax.myapp.MyActivity$Receiver
- .MyActivity$Receiver
- .Receiver
I saw others also having similar problems, but did not find any answers.
So is it possible? If not, what's better way to use broadcast receivers?
Thanks!
Yes, it is possible.
The receiver android:name attribute should look like .path.to.class.MyClass$MyInnerClass
If you want to this with a non-static inner class, you can't do it via the AndroidManifest.xml. You can however dynamically register the BroadcastReceiver: Receiver as inner class in Android
The better way to use BroadcastReceiver
s would be to make it its own class. That way the code is better organized and you can possible reuse it.
精彩评论