方案一

将app做成系统应用,直接安装在 system/app 目录下
具体步骤为:
1.在AndroidManifest文件中,添加

android:sharedUserId="android.uid.system"

例如:

 
image.png

2.将您的apk直接通过adb命令push到system/app下面,重启手机即可

方案二

1.创建一个广播接收者

package itbird.com.myapplication33;

import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import java.util.List; /**
* Created by xfkang on 2018/5/7.
*/ public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null) {
return;
} Log.d("MyReceiver", intent.getAction());
if (!isRun(context, "itbird.com.myapplication33")) {
intent.setClass(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
} /**
* 判断应用是否在运行
*
* @param context
* @return
*/
public boolean isRun(Context context, String packagename) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(100);
boolean isAppRunning = false;
//100表示取的最大的任务数,info.topActivity表示当前正在运行的Activity,info.baseActivity表系统后台有此进程在运行
for (ActivityManager.RunningTaskInfo info : list) {
if (info.topActivity.getPackageName().equals(packagename) || info.baseActivity.getPackageName().equals(packagename)) {
isAppRunning = true;
Log.d("ActivityService isRun()", info.topActivity.getPackageName() + " info.baseActivity.getPackageName()=" + info.baseActivity.getPackageName());
break;
}
}
Log.d("ActivityService isRun()", "com.ad 程序 ...isAppRunning......" + isAppRunning);
return isAppRunning;
}
}

2.给receiver配置对应intent-filter

    <receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="ITBIRD.TEST.ACTION"/>
</intent-filter>
</receiver>

3.添加权限,缺少这步则无法在Android 3.0及其之前版本上自启动

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

注意
1.由于Android系统在外置SD卡加载前广播ACTION_BOOT_COMPLETED,于是如果应用安装在外置SD卡上,它无法接收到此广播

2.FLAG_INCLUDE_STOPPED_PACKAGES的问题,请阅读《Android应用在未启动的情况下接受指定广播》

如何使APP开机自启动的更多相关文章

  1. Android中app开机自启动的开发

    (1)首先添加权限开机启动权限 <!--开机启动权限--> <uses-permission android:name="android.permission.RECEIV ...

  2. 为你的MacOS App添加开机自启动(Swift)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/52104828 ...

  3. Android——开机自启动app

    android在开机完成后会发送一个android.intent.action.BOOT_COMPLETED的广播,告诉系统内app们已经开机. 我们可以在需要开机自启动的app中定义一个广播接收器, ...

  4. Linux中java应用程序的部署,使其开机自动启动

    初步需求:将在Windows/MyEclipse中开发的java应用程序部署到Linux服务器上,使其运行 针对需求,可以参考下面这些文章,但是这些文章很多东西没有提及到,我自己尝试部署运行 在lin ...

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

    linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...

  6. Android浮动小球与开机自启动

    看着手机上的360浮动小球,不评价其具体的功能与实用性,至少在UI设计与交互方面是个不小的创新. 如图片左上角所示,球中还会显示当前手机的运行状况,向下拉动还会有弹射来达到加速.清理等目的. 那好,先 ...

  7. android实现程序开机自启动

    在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即在AndroidManife ...

  8. Android 开机自启动

    首先实现开机自启动: 第一步创建一个广播接收者,如MyBootBroadcastReceiver.java package com.example; import android.content.Br ...

  9. Android应用如何开机自启动、自启动失败原因

    本文主要介绍Android应用如何开机自启动.自启动失败的原因.adb命令发送BOOT_COMPLETED.问题:应用程序是否可以在安装后自启动,没有ui的纯service应用如何启动?答案马上揭晓^ ...

随机推荐

  1. Bootstrap框架简介

    Bootstrap是Twitter公司(www. twitter.com)开发的一个基于HTML , CSS , JavaScript的技术框架,符合HTML和 CSS规范,且代码简洁.视觉优美.该框 ...

  2. 初学Django基础02 ORM操作

    django的ORM操作 之前我们知道了models.py这个文件,这个文件是用来读取数据结构的文件,每次操作数据时都走这个模块 常用字段 AutoField int自增列,必须填入参数 primar ...

  3. 项目Alpha冲刺 10

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第10天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 ...

  4. 移动端ios针对input虚拟键盘挡住的问题

    写移动端的时候发现input的虚拟键盘对Ios的手机不是很友好 我的是苹果6 点击的时候经常会挡住input框 针对这个问题找了很多发现都没效果 最后发现用下面这段js就可以解决了 $("i ...

  5. Theano安装笔记

    由于实验需要,近三个月来,安装过十几次Theano,基本上每次都是从最基本的nvidia driver装起.总结一些粗浅的安装心得. GPU:Nvidia K40, M40, M60 软件环境:Unb ...

  6. 4、spark streaming+kafka

    一.Receiver模式 1. receiver模式原理图 在SparkStreaming程序运行起来后,Executor中会有receiver tasks接收kafka推送过来的数据.数据会被持久化 ...

  7. 原创:Spark中GraphX图运算pregel详解

    由于本人文字表达能力不足,还是多多以代码形式表述,首先展示测试代码,然后解释: package com.txq.spark.test import org.apache.spark.graphx.ut ...

  8. python学习笔记一: 《python3 input()函数》

    一.在学习之前需要先了解: 1.Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型,即把任何输入看作str. 2.input可以用作文本输入,如用户名,密码框 ...

  9. AT1879 2 つの山札

    题面 题解 直接求解比较麻烦,考虑将问题进行转化. 设序列\(a = \{3, 1, 4, 2, 5\}, b = \{3, 2, 4, 1, 5\}\),那么我们构造一个正方形方格,将\(a\)放在 ...

  10. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...