Android APP自动升级安装失败

Android APP自动升级安装失败

概述

自动升级在APP中是一个非常常见的功能,当你的应用有更新时,可以提醒用户升级甚至在必要时可强制用户升级。但随着系统版本的更新,安装apk的权限也在收紧,导致一些APP在高版本的机器上升级失败。这时就有必要了解一下如何处理这样的问题了。

权限机制

在Android7.0的发布介绍中提到了一些文件系统权限方面的修改。官网:https://developer.android.google.cn/about/versions/nougat/android-7.0-changes

以下是官网的译文(用google翻译的网页)

权限更改

Android 7.0包含可能会影响您的应用的权限更改。

文件系统权限更改

为了提高私人文件的安全性,针对Android 7.0或更高版本的应用的私人目录限制了访问权限(0700)。此设置可防止私有文件的元数据泄漏,例如其大小或存在。此权限更改有多种副作用:

所有者不应再放宽私有文件的文件权限,并且使用MODE_WORLD_READABLE和/或 尝试执行此操作 MODE_WORLD_WRITEABLE将触发a SecurityException。

注意:截至目前,此限制尚未完全执行。应用程序仍可使用本机API或FileAPI 修改其私人目录的权限。但是,我们强烈建议不要放宽对私人目录的权限。

file://在包域外 传递URI可能会使接收者无法访问路径。因此,尝试传递 file://URI触发器a FileUriExposedException。共享私有文件内容的推荐方法是使用FileProvider。

该DownloadManager可以通过文件名不再私下共享存储的文件。传统应用程序在访问时可能会以无法访问的路径结束COLUMN_LOCAL_FILENAME。针对Android 7.0或更高版本的应用会SecurityException在尝试访问时 触发COLUMN_LOCAL_FILENAME。通过使用DownloadManager.Request.setDestinationInExternalFilesDir()或 DownloadManager.Request.setDestinationInExternalPublicDir() 仍然可以访问路径 来将下载位置设置为公共位置的旧应用程序 COLUMN_LOCAL_FILENAME,但强烈建议不要使用此方法。访问由文件公开的文件的首选方法DownloadManager是使用 ContentResolver.openFileDescriptor()。

在应用之间共享文件

对于定位到Android 7.0的应用,Android框架会强制执行StrictModeAPI策略,

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值