前不久遇到一个需求,说是要实现app的静默安装并且安装完了之后要能够自启动。我上网查了很多资料,方法基本都差不多,但是基本上每种方法我都试过了,能够实现静默安装,但是自启动的时候就遇到了问题。很多类似的博客下面几乎都有人提问说为啥不能够自启动。我当时在操作的时候也发现自启动失败,后来我反复推敲尝试实现了这个功能,大多数博客介绍的方法是没有问题的,问题在于博主没有把过程讲述得很清楚,从而给读者造成了误解,特此发文一篇希望帮助广大受阻的读者。
静默更新这个需求是有一定的前提的,一般这类的需求只会出现在一些厂商定制的pad或特定设备上面,系统要给足了root权限,手机上有一类做法可以在不需要root权限的前提下实现更新,但模式算不得静默更新,当然这不是我们今天要讨论的问题,我也就不在这里多说了。
一、安装包下载
安装包下载相关的文章数不胜收,主要是代码涉及静默安装,我这里就把我的代码拿出来做个参考吧。
public class DownLoadUtils {
public static void download(final String apkUrl) {
Thread thread;
thread = new Thread(new Runnable() {
@Override
public void run() {
downloadFile(apkUrl);
}
});
thread.start();
}
public static File downloadFile(String apkUrl) {
final String fileName = "update.apk";
File tmpFile = new File("/sdcard/update");
if (!tmpFile.exists()) {
tmpFile.mkdir();
}
final File file = new File("/sdcard/update/" + fileName);
try {
URL url = new URL(apkUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
conn.connect();
double count = 0;
if (conn.getResponseCode() >= 400) {
} else {
while (count <= 100) {
Log.e("install", "download" + count + "");
if (is != null<