-
Notifications
You must be signed in to change notification settings - Fork 0
Enhance broadcastreceivers
Since AndroidAnnotations 2.4
You can enhance an Android BroadcastReceiver with the @EReceiver annotation:
@EReceiver
public class MyReceiver extends BroadcastReceiver {
}You can then start using most AA annotations, except the ones related to views and extras:
@EReceiver
public class MyReceiver extends BroadcastReceiver {
@SystemService
NotificationManager notificationManager;
@Bean
SomeObject someObject;
}Since AndroidAnnotations 3.2
The @ReceiverAction annotation allows to simply handle Broadcasts in an enhanced Receiver.
By default the Method name is used to determine the Action to be handled, but you can use the value of @ReceiverAction to pass another Action name.
Method annotated with @ReceiverAction may have the following parameters :
- An
android.content.Contextwhich will be the context given invoid onReceive(Context context, Intent intent) - An
android.content.Intentwhich will be the intent given invoid onReceive(Context context, Intent intent) - Any native,
android.os.Parcelableorjava.io.Serializableparameters annotated with@ReceiverAction.Extrawhich will be the extra put in the intent. The key of this extra is the value of the annotation@ReceiverAction.Extraif set or the name of the parameter.
@EReceiver
public class MyIntentService extends BroadcastReceiver {
@ReceiverAction("BROADCAST_ACTION_NAME")
void mySimpleAction(Intent intent) {
// ...
}
@ReceiverAction
void myAction(@ReceiverAction.Extra String valueString, Context context) {
// ...
}
@ReceiverAction
void anotherAction(@ReceiverAction.Extra("specialExtraName") String valueString, @ReceiverAction.Extra long valueLong) {
// ...
}
@Override
public void onReceive(Context context, Intent intent) {
// empty, will be overridden in generated subclass
}
}Since AndroidAnnotations 3.3
Note: Since BroadcastReceiver#onReceive is abstract, you have to add an empty implementation. For convenience, we provide the AbstractBroadcastReceiver class, which implements that method, so you do not have to do in your actual class if you derive it.
Note: You can now pass multiple actions that should be handled by using the value of @ReceiverAction.
@ReceiverAction({"MULTI_BROADCAST_ACTION1", "MULTI_BROADCAST_ACTION2"})
void multiAction(Intent intent) {
// ...
}With the dataScheme parameter you can set one or more dataSchemes that should be handled by the Receiver.
@EReceiver
public class MyIntentService extends BroadcastReceiver {
@ReceiverAction(actions = android.content.Intent.VIEW, dataSchemes = "http")
protected void onHttp() {
// Will be called when an App wants to open a http website but not for https.
}
@ReceiverAction(actions = android.content.Intent.VIEW, dataSchemes = {"http", "https"})
protected void onHttps() {
// Will be called when an App wants to open a http or https website.
}
}Your activity/fragment/service can be notified of intents using the @Receiver annotation, instead of declaring a BroadcastReceiver.
@EActivity
public class MyActivity extends Activity {
@Receiver(actions = "org.androidannotations.ACTION_1")
protected void onAction1() {
}
}More information about the @Receiver annotation.
Since AndroidAnnotations 3.1
AndroidAnnotations was created by Pierre-Yves Ricau and is sponsored by eBusinessInformations.
09/11/2014 The 3.2 release is out !
- Get started!
- Download
- Cookbook, full of recipes
- Customize annotation processing
- List of all available annotations
- Release Notes
- Examples
- Read the FAQ
- Join the Mailing list
- Create an issue
- Tag on Stack Overflow