点击上方的终端研发部,右上角选择“设为星标”
每日早8点半,技术文章准时送上
公众号后台回复“学习”,获取作者独家秘制精品资料
往期文章
记五月的一个Android面试经
今日头条屏幕适配方案落地研究
APK瘦身-是时候给App进行减负了
即学即用Android Jetpack - Navigation
手机商对“鸿蒙”进行了密集测试:比安卓系统快?
那些简历造假拿 Offer 的程序员,后来都怎么样了?
来源:承香墨影
前言
手边有个 App 产品,targetSdkVersion 升级到 26 了,一段时间之后发现应用发布升级时,升级率比之前低了不少。排查后发现,很大的一部分原因在于,Android O 增加了对具体 App 是否允许安装 App 的开关检查。此开关默认为关闭状态,需要用户主动开启,允许你的 App 安装应用,否则你无权安装应用。当然我们的升级,也属于安装应用的范畴。安装权限
什么是安装未知应用权限
起初其实不是很在意这个点,因为在触发安装的时候,系统会自动跳转到 App 设置页面,要求用户开启此权限。 这个在功能上,本身已经是自成闭环的,估计也是为了避免没有适配的 App,触发安装的时候直接崩溃了。如果细心观察过一些功能比较细腻的产品,你会发现其它们在安装前都是有一次引导的。类似 Android 6.0 中动态权限申请,一些打磨的很好的 App,会提前告诉用户,“我们因为 Xxx 原因,会使用到 x、y、z 权限,需要您的授权”等,这样一个比较友好的产品引导,让用户无抵触的去根据弹窗开启权限,而不是将授权框生硬的弹出来。增加一层引导,不仅仅是为了功能实现,而是为了追求更好的用户体验,同时也增加成功率。安装未知应用
在 Android O 之前,设置中的安全选项里,是有一个 “Allow unknown sources” 的设置,其目的就是为了方便安装来自 Google Play 之外的 App。 而在 Android O 之后,此设置被完全拿掉了,替换方案就是针对 App,增加了一个“安装未知应用”的权限。 既然要做适配,我们就需要考虑到,能否拿到当前 App 是否开启此权限,以及如果没有开启,能否自动跳转到权限开关的页面。接下来我们具体看看适配的过程,其实很简单。适配“安装位置应用”
1. 增加权限要使用此功能,首先要求 targetSdkVersion 为 26 或者更高,并且显示声明 REQUEST_INSTALL_PACKAGES 权限。<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
2.
判断是否开启权限在 PackageManager 中,新增了一个
canRequestPackageInstalls() 方法,它会返回一个 Boolean 值,直接表示当前是否具开启此权限。
3.
打开开启权限页面可以通过 **Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCESv 来启动一个 Activity,打开开启权限页面。
private fun startInstallSwitchPage(){
val intent =Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES) startActivityForResult(intent,602)
}
到这里该有的就都有了,剩下的就看如何在产品形态上包装一下,在安装前做一次检查,如果没有此权限,弹出一个精美的弹窗说明情况,引导用户去开启此权限后继续安装。
总结
产品体验是在功能实现的基础之上的,这就是为什么说有时候很多技术问题都是可以用产品方案来规避的。同样一个技术功能,通过不同的产品形态表现出来,可能就会得到不同的效果。本文对你有帮助吗? 留言、“好看”、转发是最大的支持,谢谢!阅读更多
十面阿里,七面头条 在百人团队参与游戏研发体验 除了敲代码,你还有什么副业吗? flutter开发,Dart中的那些骚气语法! APK瘦身-是时候给App进行减负了 有前途的IT人,都会适当“偷懒”! 团队开发中 Git 最佳实践,不给队友拖后腿!相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!
喜欢就给个“在看”