2013-06-21 91 views
0

我们已经构建了一个android应用程序。它是一个非市场应用程序,并被部署到该组客户。使用MobiControl,我们为我们的应用程序发送新的更新。更新默默发生。我可以使用更新按钮更新我的android应用程序吗?

在更新时,如果应用程序正在使用中,并且用户正在输入任何数据,则应用程序在不等待用户确认的情况下关闭!!,用户升级到较新版本的应用程序并重新启动它。因为这个用户失去了他的变化!另外,由于我们的应用程序处理敏感信息,因此我们无法将它们写在设备的物理存储上。因此,“保留和恢复”不是一种选择。

一个想法我想可能是提供有关我的应用程序从那里我可以将其更新到新版本(比如设置)的屏幕之一的“更新”按钮。为此,我得到了以下代码,我可以在将APK作为参数传递后显示安装意图。

Intent promptInstall = new Intent(Intent.ACTION_VIEW) 
    .setData(Uri.parse("file:///path/to/myapp.apk")) 
    .setType("application/vnd.android.package-archive"); 
startActivity(promptInstall); 

但是,当上面的代码执行时,我面临以下错误。

06-21 18:29:01.666: E/AndroidRuntime(8981): Caused by: android.content.ActivityNotFoundException: 
No Activity found to handle Intent { act=android.intent.action.VIEW typ=application/vnd.android.package-archive } 

昨天当我在一行中调用setDataAndType时,它工作。但今天用相同的代码,我再次面对同样的问题...

06-25 10:27:39.383: E/AndroidRuntime(3737): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/test/ReinstallSample.apk typ=application/vnd.android.package-archive } 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivityForResult(Activity.java:3370) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivityForResult(Activity.java:3331) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivity(Activity.java:3566) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivity(Activity.java:3534) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at com.example.reinstallsample.MainActivity.launchInstaller(MainActivity.java:73) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at com.example.reinstallsample.MainActivity.reInstall(MainActivity.java:66) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  ... 14 more 
+0

看起来您所调用的活动不在AndroidManifest中。你检查过了吗? – CharlyDelta

回答

1

尝试使用此相反,我从什么地方记得setDataAndType需要一行来完成。

Intent promptInstall = new Intent(Intent.ACTION_VIEW); 
promptInstall.setDataAndType(Uri.parse(filePath), "application/vnd.android.package-archive"); 
startActivity(promptInstall); 
+0

谢谢!与这个单一的电话它工作正常。唯一的问题是重新安装后关闭安装程序对话框,所以你知道任何配置,它不关闭,而是显示'打开','取消'选项。 –

+0

很抱歉,但并不是说我知道的,这是什么,而在测试阶段那时候,还没有研究它非常作为结尾我的项目将被发布到Play商店,这似乎是禁止我做。 –

相关问题