现在大多数的应用都会开机自启动,来电管家更是如此,添加了开机自启动监听服务后,开机后即使你没有打开来电管家应用程序,一样可以拦截来电信息。
开机自启动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的开机自启动。
至此,该来电管家的基本拦截功能,以及显示拦截信息,定时拦截,监听开关,拦截模式功能已全部实现,当然了,该应用还可以继续完善,如,将拦截记录添加通知栏,制作应用启动画面,添加手势滑动,添加短信拦截等更加丰富的功能。
附:完整代码下载
时间: 2024-10-12 21:38:39