【问题标题】:Android Issue in updating APK from Marshmallow to Nougat将 APK 从 Marshmallow 更新为 Nougat 的 Android 问题
【发布时间】:2017-08-10 11:17:35
【问题描述】:

我正在为我的应用编写应用更新程序。之后我确保设备上有我自己的旧 apk,更新程序运行良好,直到 MARSH MALLOW 并且当 NOUGAT 版本更新时,它显示错误,这是我在尝试更新的应用程序中执行的操作:

       try {

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    Uri apkURI = FileProvider.getUriForFile(getApplicationContext(),
                            getApplicationContext().getPackageName() + ".provider", new File(filepath));
                    intent.setDataAndType(apkURI, "application/vnd.android.package-archive");
                    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    startActivity(intent);
                } else {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.fromFile(new File(filepath)),
                            "application/vnd.android.package-archive");
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

应用程序在尝试打开新的现有 apk 时崩溃。

这是错误日志:

android.os.FileUriExposedException: file:///storage/emulated/0/.fTouch_app/Ftouch.jpg exposed beyond app through Intent.getData()

感谢您的帮助。谢谢。

【问题讨论】:

    标签: android file apk updates auto-update


    【解决方案1】:

    This 好像是你的问题。

    来自 FileUriExposedException 的文档

    当应用程序将 file:// Uri 暴露给另一个应用程序时引发的异常。

    不鼓励这种暴露,因为接收应用可能无法访问共享路径。例如,接收应用可能没有请求 READ_EXTERNAL_STORAGE 运行时权限,或者平台可能正在跨用户配置文件边界共享 Uri。

    相反,应用应使用 content:// Uris,以便平台可以为接收应用扩展临时权限以访问资源。

    这仅适用于面向 N 或更高版本的应用程序。允许针对早期 SDK 版本的应用程序共享 file:// Uri,但强烈建议不要这样做。

    【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多