首页 > 代码库 > android项目 之 来电管家(8) ----- 添加开机自启动监听服务

android项目 之 来电管家(8) ----- 添加开机自启动监听服务

         现在大多数的应用都会开机自启动,来电管家更是如此,添加了开机自启动监听服务后,开机后即使你没有打开来电管家应用程序,一样可以拦截来电信息。

       

      开机自启动Activity或Service的方法:

         主要步骤:

                     1.  要有开机要启动的service或activity(这里开机要启动的当然就是ListenService了)

                     2. 编写一个BroadcastReceiver用以捕获ACTION_BOOT_COMPLETED这条广播,并在捕获之后启动我们要启动的Activity或service。

       BootCompletedReceiver.java             

package com.example.callmanager;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

public class BootCompletedReceiver extends BroadcastReceiver {
	SharedPreferences spf;
	@Override
	public void onReceive(Context context, Intent intent) {
		
		if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
			 spf = context.getSharedPreferences("setting", Activity.MODE_PRIVATE);
			 Intent newIntent = new Intent("com.example.callmanager.ListenService");
			 
			 newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  //注意,必须添加这个标记,否则启动会失败 
			 System.out.println("start by broadcast");
			 if(spf.getBoolean("isStartListen", false))
				 context.startService(newIntent);  
			
		}      
		 
	}

}

               这里同样取出了用户的设置信息,如果用户未启用监听服务,则开机不自启动监听服务,更加人性化。

             

            3.  在AndroidManifest.xml配置文件中注册我们的BroadcastReceiver

	<receiver android:name=".BootCompletedReceiver">
		<intent-filter> 
			 <action android:name="android.intent.action.BOOT_COMPLETED" />
		</intent-filter> 
	</receiver>  

         4.   在AndroidManifest.xml配置文件中添加允许我们捕获该广播的权限

     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

     

            这样,通过以上四个步骤,就可实现Activity或Service的开机自启动。

           至此,该来电管家的基本拦截功能,以及显示拦截信息,定时拦截,监听开关,拦截模式功能已全部实现,当然了,该应用还可以继续完善,如,将拦截记录添加通知栏,制作应用启动画面,添加手势滑动,添加短信拦截等更加丰富的功能。

           附:完整代码下载

android项目 之 来电管家(8) ----- 添加开机自启动监听服务