0
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "app.apk")), "application/vnd.android.package-archive");
startActivity(intent); 

这是在这里找到的: 问题 [4967669] android-install-apk-programmatically

如果这样做,请使用 android服务,我收到以下错误消息:

05-03 08:24:14.559: E/AndroidRuntime(21288): 致命异常: Thread-1706 05-03 08:24:14.559: E/AndroidRuntime(21288): android.util.AndroidRuntimeException: 从外部调用 startActivity()一个活动上下文需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

我添加了 FLAG_ACTIVITY_NEW_TASK:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

但现在什么也没有发生。没有错误,但也没有尝试安装 apk。我在想可能是因为它没有活动(因为它是一项服务)?

问题 是否可以通过android后台服务安装APK?(如果是的话)有人知道我该怎么做吗?

提前致谢

PS:根据我对服务的理解,它们非常像活动,所以不确定为什么这不起作用。

4

1 回答 1

3

您可以从后台服务安装 APK。尝试使用Uri.parse而不是Uri.fromFile

        File apkfile = new File(Environment.getExternalStorageDirectory() +
                  "/download/" + "app.apk");
        if (!apkfile.exists()) {
            return;
        }
        Intent installIntent = new Intent(Intent.ACTION_VIEW);
        installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        installIntent.setDataAndType(
                Uri.parse("file://" + apkfile.toString()),
                "application/vnd.android.package-archive");
        startActivity(installIntent);
于 2013-05-03T07:56:28.130 回答