app开机自启动
1.开机广播
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.yusong.changzhoumetroline1.utils.ServiceUtils;
/**开机广播监听
- create by feisher on 2017/4/9
- Email:458079442@qq.com
*/
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
ServiceUtils.RunActivity(context);
}
}
}
2.启动定制的app(工具类中的方法)
/**
* 判断应用程序是否是活动的,不是活动的,打开程序
* @param context
*/
public static void RunActivity(Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
List<RunningTaskInfo> list = am.getRunningTasks(100);
for (RunningTaskInfo info : list) {
if (!info.topActivity.getPackageName().equals(context.getPackageName())) {
runApp(context);
}
}
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
boolean isRun = false;
for(ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance ==ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
isRun = processInfo.processName.equals(context.getPackageName());
}
}
if (isRun ==false) {
runApp(context);
}
}
}
private static void runApp(Activity context) {
Intent ootStartIntent = new Intent(context,MainActivity.class);
ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ootStartIntent);
}
3.别忘了要配置清单文件
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name=".app.BootCompleteReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>