频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
47.android服务service-代码注册广播接收者
2017-02-13 09:36:54         来源:augfun的博客  
收藏   我要投稿

广播可以在代码中注册

使用代码注册广播接收者

1.使用清单文件配置:广播一旦发出,系统会去所有的清单文件中徐照,哪一个广播接收者的action和广播的action是匹配的,如果找到了,就把广播接收者的进程启动启动起来,

2.使用代码注册:需要使用广播接收者时,执行注册的代码,不需要的时候,执行解除注册的代码。

特殊的广播接收者

安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的1.屏幕锁屏和解锁,电量的改变。

服务只能在清单文件中配置

清单文件

activity_main.xml

 

 

MainActivity.java

package com.ldw.registBroadcast;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

	private Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intent = new Intent(this, com.ldw.registBroadcast.registerService.class);
    }

    public void start(View v){
    	startService(intent);
    }
    
    public void stop(View v){
    	stopService(intent);
    }
    
}

 

registerService.java

package com.ldw.registBroadcast;

import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

public class registerService extends Service {

	private screenReceiver receiver;
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}
	
	@Override
	public void onCreate(){
		super.onCreate();
		//注册广播接收者
		//1.创建广播接收着对象
		receiver = new screenReceiver();
		//2.创建一个intent-filter对象
		IntentFilter filter = new IntentFilter();
		filter.addAction(Intent.ACTION_SCREEN_ON);
		filter.addAction(Intent.ACTION_SCREEN_OFF);
		//3.注册广播接收者
		registerReceiver(receiver, filter);
	}

	@Override
	public void onDestroy(){
		super.onDestroy();
		//解除注册广播接收者
		unregisterReceiver(receiver);
	}
}

 

screenReceiver.java

package com.ldw.registBroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class screenReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		String action = intent.getAction();
		if(Intent.ACTION_SCREEN_OFF.equals(action)){
			System.out.println("屏幕关闭off");
		}
		else if(Intent.ACTION_SCREEN_ON.equals(action)){
			System.out.println("屏幕打开on");
		}

	}

}
点击复制链接 与好友分享!回本站首页
相关TAG标签 接收者 代码
上一篇:FloatMath.sqrt android6.0 23报错(mob 分享功能集成)
下一篇:Android 文件的读写
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站