All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.androidannotations.annotations.Receiver Maven / Gradle / Ivy

There is a newer version: 4.8.0
Show newest version
/**
 * Copyright (C) 2010-2016 eBusiness Information, Excilys Group
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed To in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package org.androidannotations.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 

* This annotation is intended to be used on methods of an {@link EActivity}, * {@link EFragment} or {@link EService}. When this annotation is used, a * {@link android.content.BroadcastReceiver} will be created to receive the * Intent corresponding to the given actions and it will call the annotated * method. *

*

* The annotated method MUST return void and MAY have several parameters: *

*
    *
  • A {@link android.content.Context} which will be the context given in * {@code void onReceive(Context context, Intent intent)}
  • *
  • An {@link android.content.Intent}
  • *
  • Any native, {@link android.os.Parcelable} or {@link java.io.Serializable} * parameters annotated with {@link Receiver.Extra} which will be the extra put * in the intent. The key of this extra is the value of the annotation * {@link Receiver.Extra} if set or the name of the parameter.
  • *
*

* The annotation has four parameters: *

*
    *
  • * {@link #actions()}: One or several {@link java.lang.String} indicating the * actions which will spark the method. This parameter is MANDATORY
  • *
  • * {@link #dataSchemes()}: One or several {@link java.lang.String} indicating * the data schemes which should be handled.
  • *
  • * {@link #registerAt()}: The moment when the * {@link android.content.BroadcastReceiver} will be registered and * unregistered. By default : OnCreate/OnDestroy. The available values depend on * the enclosing enhanced component.
  • *
  • * {@link #local()}: Specify whether * android.support.v4.content.LocalBroadcastManager should be used. To use * android.support.v4.content.LocalBroadcastManager, you MUST have android * support-v4 in your classpath. Default value is false.
  • *
* *
* * Example : * *
 * @EActivity
 * public class MyActivity {
 * 
 *      @Receiver(actions = {@link android.net.wifi.WifiManager#WIFI_STATE_CHANGED_ACTION})
 *      public void onWifiStateChanged(Intent intent);
 * 
 *      @Receiver(actions = {@link android.net.wifi.WifiManager#WIFI_STATE_CHANGED_ACTION}, registerAt = RegisterAt.OnResumeOnPause)
 *      public void onWifiStateChangedWithoutIntent();
 *      
 *      @Receiver(actions = {@link android.net.wifi.WifiManager#WIFI_STATE_CHANGED_ACTION})
 *      public void onWifiStateChangedWithInjectedExtra(@Receiver.Extra({@link android.net.wifi.WifiManager#EXTRA_WIFI_STATE}) int wifiState);
 *      
 *      @Receiver(actions = {@link android.content.Intent#ACTION_VIEW}, dataSchemes = "http")
 *      public void onHttpUrlOpened(Intent intent);
 *      
 *      @Receiver(actions = {@link android.content.Intent#ACTION_VIEW}, dataSchemes = {"http", "https"})
 *      public void onHttpOrHttpsUrlOpened(Intent intent);
 * 
 * }
 * 
* *
* */ @Retention(RetentionPolicy.CLASS) @Target(ElementType.METHOD) public @interface Receiver { /** * The strings indicating the actions which will spark the method. * * @return the actions which will spark the method */ String[] actions(); /** * The strings indicating the data schemes which should be handled. * * @return the data schemes which should be handled */ String[] dataSchemes() default {}; /** * The event pair when the receiver should be registered/unregistered. * * @return the registration/unregistration point */ RegisterAt registerAt() default RegisterAt.OnCreateOnDestroy; /** * Whether to use LocalBroadcastManager. * * @return true, if LocalBroadcastManager should be used, * false otherwise * */ boolean local() default false; /** * Represents event pairs for BroadcastReceiver registration/unregistration. */ enum RegisterAt { /** * Register in the onCreate method, unregister in the onDestroy method. */ OnCreateOnDestroy, // /** * Register in the onStart method, unregister in the onStop method. */ OnStartOnStop, // /** * Register in the onResume method, unregister in the onPause method. */ OnResumeOnPause, // /** * Register in the onAttach method, unregister in the onDetach method. * Except for View which will register in the onAttachedToWindow and * unregister in the onDetachedFromWindow. */ OnAttachOnDetach } /** *

* Should be used on any native, {@link android.os.Parcelable} or * {@link java.io.Serializable} parameter of a method annotated with * {@link Receiver} to inject the extra put in the intent parameter of * {@code void onReceive(Context context, Intent intent)}. The key of this * extra is the value of the annotation {@link Receiver.Extra} if it * is set or the name of the parameter. * If Parceler is on the classpath, extras * annotated with @Parcel, or collections supported by Parceler will be * automatically marshaled using a {@link android.os.Parcelable Parcelable} * through the Parcels utility class. *

*/ @Retention(RetentionPolicy.CLASS) @Target(ElementType.PARAMETER) public @interface Extra { /** * Defines the extra's name. If this parameter isn't set the annotated * parameter name will be used. * * @return the name of the extra */ String value() default ""; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy