Android(安卓)开机启动应用
现在去面试的时候有些人碰到了这样的问题,Android中如果实现开机启动一个app应用?
今天我们就一起来探讨这个问题,希望大家在以后工作中有所帮助,谢谢!直接进入主题。
首先我们大家一定会想到用我们android的 BroadcastReceiver来实现,对就是用我们的BroadcastReceiver,如果大家对广播不是很熟悉的话要先了解一下。
我简单的介绍一下我们的广播吧。
广播分为两种有一下两种说法:
一种方式区分常驻和非常驻
1.一种是常驻广播,就是在我们manifest注册广播,当我们的应用结束之后,这个广播依然存在。
2.另一种就是非常驻广播,就是我们用代码注册的广播。
二种方式 静态注册和动态注册的区别
1.静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。2.动态注册:在代码中通过registerReceiver()手工注册.当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。
静态注册的步骤:
1.定义广播接收器,继承BroadcastReceiver类,覆写onReceive函数.
2.在xml文件中注册监听器,定义Intent-Filter中感兴趣的action操作.
3.使用sendBroadCast向系统发送对其感兴趣的广播接收器中
SMSReceiver smsReceiver = new SMSReceiver();
IntentFilterfilter = new IntentFilter();
filter.addAction(“android.provider.Telephony.SMS_RECEIVED”);
TestBC1Activity.this.registerReceiver(smsReceiver, filter);
(无需在配置文件中注册接收器)那么我们android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个Standard Broadcast Action android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action。
下面我就来简单写以下实现的步骤:
第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context,Intent intent),在其中启动你想要启动的Service或app。
import android.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
import android.util.Log;
public class BootBroadcastReceiver extends BroadcastReceiver {
//重写onReceive方法
@Override
public voidonReceive(Context context, Intent intent) {
// 第一种情况 我们要启动的Service ,后边的XXX.class就是要启动的服务
Intent service = new Intent(context,XXXclass);
context.startService(service);
Log.v("TAG", "开机自动服务自动启动.....");
//第二种情况是我们要启动应用,参数为需要自动启动的应用的包名
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);//这段代码是关键点
context.startActivity(intent );
}
}
第二步:配置xml文件,在receiver接收这种添加intent-filter配置
<receiverandroid:name="BootBroadcastReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.BOOT_COMPLETED"></action>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</receiver>
第三步:添加权限
<android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
ok,搞定,希望对大家有所帮助,谢谢大家!有问题可以加Q聊 545614498
更多相关文章
- Android内核开发:图解Android系统的启动过程
- Android内核开发:图解Android系统的启动过程
- android进程创建分析
- Android内核开发:学会分析系统的启动log
- Android学习第八天—全局大喇叭(详解广播机制)
- [Android] Android应用启动后自动创建桌面快捷方式
- Android(安卓)Socket 发送广播包的那些坑
- Android(安卓)xutils 登录 注册
- 如何隐藏Android4.0及以上版本的ActionBar、NotificationBar、St