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的开机自启动。

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

附:完整代码下载

时间: 2024-10-12 21:38:39

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

android项目 之 来电管家(5) ----- 添加监听服务

上面四节,已经实现了界面设计,黑名单(白名单的添加与删除与黑名单同理,不再赘述),启用监听开关,定时拦截开关,及拦截模式选择等功能,下面就要实现来电管家最核心的功能,也就是拦截功能.   主要思路: 1.  制定拦截模式,这里主要有两个,一个是黑名单模式,也就是只拦截在黑名单中的号码:另一个就是白名单模式,拦截除了白名单以外的号码. 2.  根据用户自定义设置信息,制定正则表达式,判断拦截的标准. 3.  使用对应的类实现挂断电话的功能. 监听模块主要是利用service实现功能,为了实现电话挂

android项目 之 来电管家(1) ----- 界面设计

因为需要,最近几天忙着写来电管家这个小软件,现在已经基本写的差不多了,基本的功能也都已实现,就剩下后续的完善了,而之前的记事本项目最近几天没写,但是肯定还是会完成的. 来电管家的基本功能,这里主要做的是拦截. 1.    添加黑白名单 2.    选择拦截模式 3.    启用拦截时间段 4.    拦截开关 主要功能,就是通过用户选择开启拦截,并选择拦截模式,这时就会启动后台监听服务,监听来电,判断是否挂断,并且,用户可以自由选择拦截时间段,也就是在该时间段内才启用监听服务. 先来看界面:  

android项目 之 来电管家(7) ----- 加载用户设置并启监听用服务

因为我们用的是SharedPreferences来存储用户设置信息,那么在初次进入来电管家时,会有一些默认的设置,后续根据用户的设置,更新设置信息文件的内容. 打开应用程序,首先启动的是ActivityGroupDemo,并默认显示黑名单界面,这时,需要在ActivityGroupDemo.java中添加代码,判断用户是否是第一次进入该应用,如果是第一次,则写入默认的设置信息. 这里判断用户是否为第一次进入该应用程序,采用的思路为: 1)因为SharedPreferences会在应用程序目录下的

android项目 之 来电管家(4) ----- 添加拦截时间段

在大多数的骚扰拦截类的软件中都会有定时拦截这个实用的的功能,其实,也不难实现. 看图: 在未选中启用时间段时,下面的两个开始时间和结束时间呈灰色状态,并且单击无响应,启用时间段后,下面则变成了可以单击的状态,通过单击可以弹出选择日期与时间的对话框,用于选择开始时间和结束时间. 主要思路: 1.  启用时间段,将下面的控件变成可获得焦点状态 2.  添加单击事件,弹出日期时间选择对话框 3.  选择时间,并显示在相应的位置 4.  通过SharedPrefresence将相关设置保存,以便下次启动

android项目 之 来电管家(2) ----- ListView+CheckBox的使用

上一节,已经完成了来电管家的界面设计,那么下面就要实现具体的功能了,如何将添加的黑白名单显示呢?这里用到了ListView,那么,如果需要删除黑白名单呢,是一个个长按弹出菜单删除,还是将所的黑白名单清空呢,这都不符合用户的需求,往往,都是删除多个,这就有个问题了,如何在ListView中删除指定的多个item呢??可能大家想到了,要用到CheckBox. 先看图: 可以看出,当处于删除模式时,底部按钮也变成了删除与返回,中间也显示了当前共选择了多少项,而且在ListView的每一个Item右边也

android项目 之 来电管家(3) ----- 添加与删除黑名单

现在就实现具体的功能-----添加黑名单 先看图: 从图中也可以看出整个逻辑,就是: 1.  点击底部的添加按钮 2.  转到联系人选择界面选择联系人(这里调用的是系统的联系人界面,每次只能选择一个联系人,当然了,要实现每次选择多个联系人也可以,可以自定义选择联系人界面) 3. 返回选择的联系人并插入到数据库中. 4. 遍历数据库中的黑名单表,将所有的黑名单显示在ListView中 5. 删除联系人 6. 刷新黑名单显示列表 主要代码(BlackListActivity.java): priva

Centos 下添加开机自启动服务和脚本

最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两条命令即可: 1  # systemctl enable docker.service #设置docker服务为自启动服务 相当于我们的 chkconfig docker on 2 # systemctl start docker.service #启动docker服务 2.添加开机自启脚本 在ce

linux添加开机自启动脚本示例详解

来源: linux添加开机自启动脚本示例详解 linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行;step2. 再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行;如:$ vim /etc/rc.local#!/bin/sh## This script will be executed *after*

supervisord安装,启动/关闭,添加开机自启动服务

centos7安装supervisord #yum -y install supervisor 安装路径/usr/bin/supervisord,配置文件/etc/supervisor.conf 一.手动启动/关闭 supervisor手动启动: #/usr/bin/supervisord -c /etc/supervisor.conf supervisor手动关闭: #/usr/bin/supervisorctl stop all    先关闭supervisor启动脚本,之后再关闭super