方案1
将APP置于系统APP下,直接安装在system/app目录中
具体步骤如下。
在安卓制造文件中,添加
安卓: shared userid=' Android.uid.system '
例如:
image.png
2 .直接用adb命令在system/app下推送你的apk,重启手机即可
方案2
1 .创建广播收件人
packageitbird.com.my application 33;
import Android.app.activity manager;
import Android.content.broadcast receiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import java.util.List;
//*
* Created by xfkang on 2018/5/7。
*/
publicclassmyreceiverextendsbroadcastreceiver {
@Override
公共语音接受(context context,Intent intent ) )。
if(intent==null ) {
返回;
}
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 );
}
}
//*
确定APP应用程序是否正在运行
*
* @param context
* @return
*/
publicbooleanisrun (上下文上下文,字符串包名称) )。
activitymanageram=(activity manager ) context.getsystemservice (context.activity _ service );
list list=am.getrunningtasks (100;
布尔型isapprunning=false;
//100表示获取的任务的最大数量,info.topActivity表示当前正在运行的Activity,在info.baseActivity表系统的后台运行该进程
活动管理器. runningtaskinfoinfo :列表(for ) )
info.top activity.get package name (.equals ) (package name|| info.base activity.get package name ) )
isAppRunning=true;
log.d(activityserviceisrun (,info.top activity.get package name ),info.base activity.get package name )=
黑;
}
}
log.d(activityserviceisrun ),) com.ad程序. isapprunning . ) isapprunning );
返回isapprunning;
}
}
构成与接收程序对应的插入过滤器
3 .添加权限。 没有这一步,在Android 3.0之前就无法自我启动
注意
如果外部SD卡上安装了APP应用程序,则Android系统将在加载外部SD卡之前广播ACTION_BOOT_COMPLETED,因此无法接收此广播
2.flag _ include _ stopped _ packages的问题,请阅读《Android应用在未启动的情况下接受指定广播》