首页 > 其他分享 >Android问题解决:android.os.FileUriExposedException: file:///storage/......Intent.getData()

Android问题解决:android.os.FileUriExposedException: file:///storage/......Intent.getData()

时间:2023-04-20 22:37:14浏览次数:49  
标签:java ...... storage FileUriExposedException Intent android os app View



文章目录

  • 一、遇到问题
  • 二、解决问题
  • 三、分析问题


一、遇到问题

--------- beginning of crash
2022-12-27 20:18:15.010 14422-14422/com.lisi.evidence_box E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.lisi.evidence_box, PID: 14422
    android.os.FileUriExposedException: file:///storage/emulated/0/EasyPusher/2022_12_27_20_16_08-0.mp4 exposed beyond app through Intent.getData()
        at android.os.StrictMode.onFileUriExposed(StrictMode.java:2089)
        at android.net.Uri.checkFileUriExposed(Uri.java:2388)
        at android.content.Intent.prepareToLeaveProcess(Intent.java:10827)
        at android.content.Intent.prepareToLeaveProcess(Intent.java:10777)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1712)
        at android.app.Activity.startActivityForResult(Activity.java:5258)
        at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
        at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:152)
        at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:793)
        at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:907)
        at android.support.v4.app.Fragment.startActivity(Fragment.java:1009)
        at android.support.v4.app.Fragment.startActivity(Fragment.java:998)
        at com.lisi.evidence_box.activitys.MediaFilesActivity$LocalFileFragment.onClick(MediaFilesActivity.java:230)
        at android.view.View.performClick(View.java:7185)
        at android.view.View.performClickInternal(View.java:7162)
        at android.view.View.access$3500(View.java:819)
        at android.view.View$PerformClick.run(View.java:27678)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7562)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Android问题解决:android.os.FileUriExposedException: file:///storage/......Intent.getData()_android

二、解决问题

  • AndroidManifest.xml
<application
    	
		<provider
		    android:name="android.support.v4.content.FileProvider"
		    android:authorities="com.lisi.evidence_box.provider"
		    android:exported="false"
		    android:grantUriPermissions="true">
		    <meta-data
		        android:name="android.support.FILE_PROVIDER_PATHS"
		        android:resource="@xml/provider_paths"/>
		</provider>
		
    </application>
  • /res/xml/provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>
  • 【原本】Java源码
if (path.endsWith(".mp4")) {
    try {
        File f = new File(path);
        Uri uri = Uri.fromFile(f);

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "video/*");
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}
  • 【改成】Java源码
if (path.endsWith(".mp4")) {
    try{
        File f = new File(path);
        Uri contentUri = FileProvider.getUriForFile(getContext(), "com.your.package.provider", f);

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(contentUri, "video/*");
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}

三、分析问题

Android N对访问文件权限收回,按照Android N的要求,若要在应用间共享文件,您应发送一项 content://URI,并授予 URI 临时访问权限。

觉得好,就一键三连呗(点赞+收藏+关注)


标签:java,......,storage,FileUriExposedException,Intent,android,os,app,View
From: https://blog.51cto.com/u_16081772/6210813

相关文章

  • 19c环境,运行DBCA创建CDB时,报错ORA-01519: error while processing file:?/rdbms/admin
    1、同事新搭建的一套19CRAC,补丁为19.10,运行DBCA安装CDB数据库时报错,错误日志如下所示:ORA-01519:errorwhileprocessingfile:?/rdbms/admin/dcore.bsq.....ORA-00604:erroroccurredatrecursiveSQLlevel1ORA-01119:errorincreatingdatabasefile'+DATA01/CDB1/pdb......
  • [Maven] The JAVA_HOME environment variable is not definded...... 配置错误日志
    ...因为是第一次配置Maven,所以出现了很多错误所以列举一二。出现找不到Java_Home环境变量的时候,如图。这个时候可能是,你的Java_Home路径配置错误,在Java_Home路径中,将\bin删掉,在path后面跟\bin,如%java_home%\bin,而不是直接在java_home中直接写死。......
  • 启动SSH服务报:Job for ssh.service failed because the control process exited with
    Jobforssh.servicefailedbecausethecontrolprocessexitedwitherrorcodeseesystemctlstatusssh.serviceandjournalctl-xefordetails.然后按照提示输入:systemctlstatussshd.service 表示给出的提示很坑爹,完全不知道哪里出错了。经过艰难的百度,可能是SELI......
  • K8S-StorageClass资源-实践【补充知识点】
    Kubernetes学习目录1、准备工作1.1、官方文档支持的存储制备器:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#provisionerNFSprovisioner:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#nfs1.2、nfs-subdir-external-pro......
  • 【230415-1】从1,2,3,......,100这一百个数中,任取两个数,使其能被4整除的取法有几种?
    ......
  • 给webpack提了一个pr之后......
    前言我不是标题党啊,是真的给webpack提了一个pr,提交之后,脑子里就是一句话:“纸上学来终觉浅,绝知此事要躬行”。欲知来龙去脉,听我娓娓道来。pr如下,<https://github.com/webpack/webpack/pull/16292>,目前还是unreviewed状态。\\阅读此文章你将会了解以下知识点,webstrom调试webpack源......
  • SAN(Storage Area Network)
    SAN实际是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。目前一般的SAN提供2Gb/S到4Gb/S的传输数率,同时SAN网络独立于数据网络存在,因此存取速度很快,另外SAN一般采用高端的RAID阵列,使SAN的性能在几种专业存储方案中傲视群雄。SAN由于其基础是一个专用网络,因此扩展性很强......
  • vuex存储和本地存储(localstorage、sessionstorage)的区别
    1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。3.永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。注:很多朋友觉得用localstorage可以代替vuex,对于不变的数据确实可......
  • ubuntu20.0.4双系统+CUDA+CUDNN+......流程记录
    https://zhuanlan.zhihu.com/p/366882419?utm_id=0主要安装步骤跟随这个,但是不全正确。把附加驱动(software&update)自动更新关闭鱼香肉丝把系统源换成国内的:wgethttp://fishros.com/install-Ofishros&&.fishros选5换系统源选2换成国内并且清理第三......
  • cookies、sessionStorage与localStorage在Vue中的使用
    目录简介localStorage的使用语法示例sessionStorage的操作语法示例cookie的操作vue-cookie语法示例vue-cookies语法示例js-cookie的使用简介cookies临时存储在客户端中,并且有过期事件,到过期时间会被自动清理。sessionStorage临时存储在客户端中,关闭浏览器后......