android receiver使用方法


参考网址:http://www.pin5i.com/showtopic-android-receiver-sample.html

可以在代码文件中声明一个receiver,也可以在manifest中声明一个,前者中的receiver只有在该activity launch起来以后才会监听其所感兴趣的文件,而如果在androidManifext.xml中声明的话,就不受限制,随时可以监听感兴趣的事件。

首先谈谈在androidManifext.xml中注册一个receiver, 例如我们想监听相机按钮按下事件的发生,并且发生后调用我们的camera程序

   <receiver android:name="CameraButtonIntentReceiver">
               <intent-filter>
                   <action android:name="android.intent.action.CAMERA_BUTTON"/>
               </intent-filter>
   </receiver>

在这个配置文件中声明了一个receiver用来监听相机的按键事件,所以还需要在代码文件定义与配置文件中同名的receiver:

   public class CameraButtonIntentReceiver extends BroadcastReceiver {
   public void onReceive(Context context, Intent intent) {
       Intent i = new Intent(Intent.ACTION_MAIN);
           i.setClass(context, Camera.class);
           i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           context.startActivity(i);
   }
   }

关于另外一种,在代码中注册一个receiver,例如我们想在代码文件中监听电池电量的变化,就可以按照如下方法

private final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
         @Override
           public void onReceive(Context context, Intent intent) {
               String action = intent.getAction();
                 if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
                 …
                 }
           }
   }


这种方法需要在onCreate 或者onStart中注册该receiver所感兴趣的intent,如:

registerReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);

在onStop及onDestroy中注销监听

registerReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);

--------------------------------------------
关机启动receiver

在manifest中声明

<receiver android:name=".XXXReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_SHUTDOWN" />
    </intent-filter>
</receiver>
public class XXXReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ...
    }
}

可以监听的action可以参考:
http://developer.android.com/reference/android/content/Intent.html
---------------------------------------------
activity标签中使用的参数:
http://developer.android.com/guide/topics/manifest/activity-element.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM