Android 程序 开机自启动问题
在Android程序中,我们有很多功能或需求需要手机开机后就自动启动,通常我们采用的方法是监听**开机启动的广播**或者开机声音的广播等等只有开机时才会发出的操作。
我们利用开机广播来实现程序开机自启动需要如下几个操作:
1.在清单配置文件 manifest下添加(表示将程序安装在手机存储中而非SD卡中)
android:installLocation="internalOnly"
2.注册一个开机广播
</receiver>-->
<receiver
android:name="com.example.bdmobile.BootBroadcastReceiver"
android:enabled="true"
android:exported="true"
**android:permission="android.permission.RECEIVE_BOOT_COMPLETED**"
>
<intent-filter>
**<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME"/>**
</intent-filter>
</receiver>
3.开机接收开机广播的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
4.新建一个广播接收器,接收到广播后的操作
public class BootBroadcastReceiver extends BroadcastReceiver {
Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
mContext=context;
//if (intent.getAction().equals(action_boot) || intent.getAction().equals(action_packageadd)|| intent.getAction().equals(action_packageremove) || intent.getAction().equals(action_packagereplace))
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Log.i("123456","android.intent.action.BOOT_COMPLETED");
Intent ootStartIntent=new Intent(context,MainActivity.class);
/* ootStartIntent.setAction("android.intent.action.MAIN");
ootStartIntent.addCategory("android.intent.category.LAUNCHER");*/
**ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);**
context.startActivity(ootStartIntent);
}
}
}
经过这四步操作,程序就能实现开机自启动,在高版本的Android程序中,有些手机需要在手机管家会把自启动禁掉,需要重新设置。