首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用更新按钮更新我的android应用程序吗?

我可以使用更新按钮更新我的android应用程序吗?
EN

Stack Overflow用户
提问于 2013-06-21 21:25:23
回答 1查看 569关注 0票数 0

我们已经构建了一个android应用程序。这是一个非市场应用程序,并部署到一组客户。使用MobiControl为我们的应用程序发送新的更新。更新以静默方式进行。

在更新时,如果应用程序正在使用,并且用户正在输入任何数据,则应用程序将关闭,而无需等待用户的确认!!,用户将升级到较新版本的应用程序并重新启动它。因为这个用户丢失了他的更改!!此外,当我们的应用程序处理敏感信息时,我们永远不会将它们写入设备的物理存储中。因此,“保留并恢复”不是一个选项。

我想的一个想法是在我的应用程序的一个屏幕上提供一个“更新”按钮(比如设置),这样我就可以将它更新到较新的版本。为此,我获得了以下代码,通过这些代码,我可以在将APK作为参数传递后显示安装意图。

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

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

代码语言:javascript
复制
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时,它起作用了。但是今天我用同样的代码再次面对同样的问题……

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-06-21 22:36:21

试着使用它,我记得在某个地方,setDataAndType需要在一行中完成。

代码语言:javascript
复制
Intent promptInstall = new Intent(Intent.ACTION_VIEW);
promptInstall.setDataAndType(Uri.parse(filePath), "application/vnd.android.package-archive");
startActivity(promptInstall);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17236430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档