>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22323 个阅读者 刷新本主题
 * 贴子主题:  Android Broadcast receiver 编程-Mobile and Linux Development 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-03-31 19:49:47     消息  查看  搜索  好友  邮件  复制  引用

    在Android中,广播(broadcast)是非常有用的功能。通过广播可以通知其他广播接受这某个事件发生了。比如电源不足,信号不好等。

         下面我做了一个简单的demo,首先看看activity
  1.    package  com.android.broadcasttest;
  2.    import  android.app.Activity;
  3.    import  android.content.Intent;
  4.    import  android.os.Bundle;
  5.    import  android.view.View;
  6.    import  android.view.View.OnClickListener;
  7.    import  android.widget.Button;
  8.    public   class  BroadcastTest  extends Activity {
  9.        public   static   final  String NEW_LIFEFORM_DETECTED =  
  10.            "com.android.broadcasttest.NEW_LIFEFORM" ;
  11.        /** Called when the activity is first created. */  
  12.        @Override  
  13.        public   void  onCreate(Bundle savedInstanceState) {
  14.            super .onCreate(savedInstanceState);
  15.           setContentView(R.layout.main);
  16.           Button btn0 = (Button)findViewById(R.id.btn0);
  17.           btn0.setOnClickListener( new  OnClickListener() {
  18.                public   void  onClick(View v) {
  19.                   Intent it =  new  Intent(NEW_LIFEFORM_DETECTED);          
  20.                   sendBroadcast(it);
  21.               }
  22.           });
  23.       }
  24.   }

     在这个activity中生成了一个按钮,当按下按钮的时候通过sendBroadcast()发送一个广播。

         我们再看看广播接收者代码:

  1.    package  com.android.broadcasttest;
  2.    import  android.content.BroadcastReceiver;
  3.    import  android.content.Context;
  4.    import  android.content.Intent;
  5.    import  android.util.Log;
  6.    import  android.widget.Toast;
  7.    public   class  MyBroadcastReceiver  extends BroadcastReceiver {
  8.        public   static   final  String BURN =
  9.            "com.paad.alien.action.BURN_IT_WITH_FIRE" ;
  10.        public  MyBroadcastReceiver () {
  11.           Log.v( "BROADCAST_TAG" ,  "myBroadCast" );
  12.       }
  13.        @Override  
  14.        public   void  onReceive(Context context, Intent intent) {
  15.            // TODO Auto-generated method stub        
  16.           Toast.makeText(context,  "成功接收广播:" , Toast.LENGTH_LONG).show();  
  17.       }
  18.   }

     在onReceive()中实现了当接收到广播所做的动作。

         我们还需要在AndroidManifest.xml中注册该receiver

  1.    <? xml   version = "1.0"   encoding = "utf-8" ?>  
  2.    < manifest   xmlns:android = "http://schemas.android.com/apk/res/android"  
  3.          package = "com.android.broadcasttest"  
  4.          android:versionCode = "1"  
  5.          android:versionName = "1.0" >  
  6.        < application   android:icon = "@drawable/icon"   android:label = "@string/app_name" >  
  7.            < activity   android:name = ".BroadcastTest"  
  8.                      android:label = "@string/app_name" >  
  9.                < intent-filter >  
  10.                    < action   android:name = "android.intent.action.MAIN"   />  
  11.                    < category   android:name = "android.intent.category.LAUNCHER"   />  
  12.                </ intent-filter >  
  13.            </ activity >  
  14.            < receiver   android:name = ".MyBroadcastReceiver" >  
  15.                < intent-filter >  
  16.                    < action   android:name = "com.android.broadcasttest.NEW_LIFEFORM"   />  
  17.                </ intent-filter >  
  18.            </ receiver >  
  19.        </ application >          
  20.        < uses-sdk   android:minSdkVersion = "8"   />  
  21.    </ manifest >  

     在receiver的action中定义了该receiver能够接受的广播。



----------------------------
原文链接:https://blog.51cto.com/buaadallas/377637

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-14 08:30:02 重新编辑]
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3057

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员