2013-05-03 103 views
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); 

此发现这里安装APK: Question [4967669] android-install-apk-programmatically如何以编程方式从服务

使用的是Android 服务,如果做到这一点,我得到了以下错误消息:

05- 03 08:24:14.559:E/AndroidRuntime(21288):致命例外: 线程-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? (如果是这样)做任何一个knwo我该怎么做?

由于提前

PS:从我服务的理解他们是非常喜欢的活动等等不知道为什么这不会工作。

+0

http://stackoverflow.com/questions/4604239/install-application-programmatically-on-android。检查接受的答案在链接 – Raghunandan 2013-05-03 07:56:55

+0

可以帮助我从哪些链接或资源你采取的帮助我是新手,并面临难以实现相同的目标 – nida 2014-01-16 08:42:12

回答

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); 
+0

它从服务工作。我的APK实际上已损坏,并显示正在被活动隐藏的解析消息。谢谢。 – 2013-05-03 08:33:42

相关问题