博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android N及以上版本安装Apk报错
阅读量:6833 次
发布时间:2019-06-26

本文共 1701 字,大约阅读时间需要 5 分钟。

hot3.png

Android N 安装Apk报错  

android.os.FileUriExposedException: file:///storage/emulated/0/download/1558506119385taiheApp.apk exposed beyond app through Intent.getData()

3d09d67be9a25a2265e38298a0219fa051d.jpg

因为 Android7.0加上了“私有目录被限制访问”

“私有目录被限制访问“ 是指在Android7.0中为了提高私有文件的安全性,面向 Android N 或更高版本的应用私有目录将被限制访问。这点类似iOS的沙盒机制。

解决报错的方法: 

在AndroidManifest.xml清单文件中注册provider

  • exported:要求必须为false,为true则会报安全异常。
  • grantUriPermissions:true,表示授予 URI 临时访问权 
    限。

在res目录下新建一个xml文件夹,然后新建一个provider_paths的xml文件

然后再更新App的地方改写代码

public static void install(Context context) {        File file = new File(                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)                , "dx.apk");        Intent intent = new Intent(Intent.ACTION_VIEW);        // 由于没有在Activity环境下启动Activity,设置下面的标签        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判读版本是否在7.0以上                       File file= new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"dx.apk");                    //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致   参数3  共享的文件                    Uri apkUri =                            FileProvider.getUriForFile(context, "com.wlhl.dxcount", file);                    intent.setDataAndType(apkUri, "application/vnd.android.package-archive");        }else{            intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/"+enqueue+"dx.apk")),                            "application/vnd.android.package-archive");        }        context.startActivity(intent);    }

 

转载于:https://my.oschina.net/lanyu96/blog/3052716

你可能感兴趣的文章
Silverlight C# 游戏开发:L6 3D摄像机
查看>>
XML和XMLSocket(一) -- XML的基础知识
查看>>
[强烈推荐]ORACLE SQL:经典查询练手第四篇(不懂装懂,永世饭桶!)
查看>>
Struts知识问答
查看>>
C# 中符号的作用[备忘]
查看>>
关于preempt_enable 和 preempt_disable 【转】
查看>>
[SDK2.2]Windows Azure Virtual Network (1) 概念
查看>>
SQLAlchemy 与 fask-SQLAlchemy 中的多表查询例子
查看>>
JS 获取图片原始尺寸-防止图片溢出
查看>>
Java反射
查看>>
Codeforce 712A Memory and Crow
查看>>
Keil代码中for循环延时问题
查看>>
JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构
查看>>
ArcGIS制图之Subset工具点抽稀
查看>>
很好看的后台管理界面
查看>>
Maven 使用Eclipse构建Web项目
查看>>
用户密码加密存储十问十答,一文说透密码安全存储
查看>>
IL指令详细
查看>>
parted空闲空间添加分区
查看>>
Nginx 作为反向代理优化要点proxy_buffering
查看>>