android开发如何在8.0系统中用代码打开“允许安装未知来源的应用”,而不需用指引用户去跳转带应用列表去打开

qq_28392907 2018-03-27 11:30:18
举个例子,比如我自己开发了一个安卓版的app,app中有一个下载更新的功能,此下载更新是拿到自己服务端的新版apk路径,然后进行下载到本地,下载完毕自动安装并且打开,但是在android8.0系统中,无法自动安装打开app,其他低于8.0的没问题。后来找到原因就是,8.0系统限制了未知来源的应用安装的权限。。如何用代码的方式打开该权限,有大神可以给我解答疑难吗????网上解决方案是,弹个提示框,指引用户去列表找到改应用,手动打开权限。由于用户体验问题,所以我想做的是不需要用户去手动打开权限,想用代码的方式实现打开该权限
...全文
1656 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄油奥特曼 2019-04-19
  • 打赏
  • 举报
回复
/** * 通过隐式意图调用系统安装程序安装APK */ public void install(Context context,File file) { Intent intent = new Intent(Intent.ACTION_VIEW); // 由于没有在Activity环境下启动Activity,设置下面的标签 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //判读版本是否在7.0以上 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件 Uri apkUri = FileProvider.getUriForFile(context, "com.xxx.xxx.fileprovider", file); //添加这一句表示对目标应用临时授权该Uri所代表的文件 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); } else { intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); } context.startActivity(intent); } 你的代码里肯定没有这句话 intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 把这句加上就好了
qq_28392907 2018-03-28
  • 打赏
  • 举报
回复
引导用户体验太差,可以用代码直接实现吗??
开发者_android 2018-03-28
  • 打赏
  • 举报
回复
权限设置就是为了安全角度考虑的,代码如果还可以直接安装,那8.0系统更新的安全机制就没意义了。
jklwan 2018-03-27
  • 打赏
  • 举报
回复
android8.0需要适配,先判断是否有权限,没有的话引导用户进行设置 参考链接

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧