Android 7.0以上调用相机报错

Android 7.0以上调用相机报错
android.os.FileUriExposedException: file:///storage/emulated/0/file_image.jpg exposed beyond app through ClipData.Item.getUri()错误

在Application 中加入以下代码为什么就好了 ... 查了以下大家都是这样回复 却不知道为什么 有没有大神知道原理呀

        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure();

4个回答

这是fileprivider没适配的问题 7.0以下 可以 Uri.fromFile();去获取 你需要做的是 首先声明一个fileprovider

android:name=".MyFileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/path" />

            再配置个路径  
            <paths xmlns:android="http://schemas.android.com/apk/res/android">
<!--"."表示所有路径-->
<external-path name="path_files" path="."/>


在通过上面的方法调用就好了 只是uri 问题 其他不变

7.0是通过FileProvider来获取URI的 请参考https://blog.csdn.net/liuwei187/article/details/73920750

7.0的 权限不一样 你看 楼上的配置就星 7.0 以后 都需要这么搞 文档的权限 变的不一样了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android 7.0以上调用相机崩溃
android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1041503431.jpg exposed beyond app through ClipData.Itm.getUri() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Android 7.0调用相机崩溃
错误提示:android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1041503431.jpg exposed beyond app through ClipData.Item.getUri() 处理方式/** * Open camera */ private void showCameraAction()
android 7.0调用相机 崩溃
错误代码:  android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri() 解决办法: 在Application的onCreat()方法中添加以下代码: StrictMode.Vm
Android 7.0调用相机的深坑
首先在清单文件中配置:&amp;lt;provider android:name=&quot;android.support.v4.content.FileProvider&quot; android:authorities=&quot;${applicationId}.fileprovider&quot; android:exported=&quot;false&quot; android:grantUriPermissions=...
Android 7.0调用相机方法
Android 7.0之后调用相机的方式不允许以file://的方式调用,需要以共享文件的方式content://url ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, tempFile.getAbsolutePath()); Uri uri
Android 7.0调用相机出错
我在写android头像上传,发现7.0的手机在调用时报错。代码是网上找的。rn错误信息:rnrn Process: com.example.administrator.myapplication, PID: 3997rn java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object referencern at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:583)rn at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557)rn at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399)rnrnManifest里的provider:rnrnrn rn rnrn调用代码:rnrn File file=new File(Environment.getExternalStorageDirectory(), "/temp/"+System.currentTimeMillis() + ".jpg");rn if (!file.getParentFile().exists())file.getParentFile().mkdirs();rn//这行报错rn Uri imageUri = FileProvider.getUriForFile(getActivity(), "com.example.administrator.myapplication", file);rn Intent intent = new Intent();rn intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); rn intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//设置Action为拍照rn intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将拍取的照片保存到指定URIrn startActivityForResult(intent,1006);rnrnfile_paths:rnrnrnrn rnrnrn求各位大神指教!rn
安卓学习笔记---调用相机功能在安卓7.0以上报错android.os.FileUriExposedException
解决方法: 1. 在AndroidManifest.xml中添加如下代码 <!-- 注意: authorities:app的包名.fileProvider grantUriPermissions:必须是true,表示授予 URI 临时访问权限 exported:必须是false resource:中的@xml/file_paths是我们接下来要添加的文件 --> pro
android 7.0调用相机闪退问题
解决方法一: Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(MyApplication.getFileDir(getActivity()), String.valueOf(System.currentTimeMillis()) + ".jpg"); pat
Android 7.0系统调用相机崩溃
按照原来代码,6.0以上申请权限,有了权限调用相机流程在今天测试的同事给我打破了。 同事拿着个7.0的手机来我旁边,一点拍照就崩溃了。当时有点摸不到头脑。 查看log,抛出了FileUriExposedException异常。 查了半天(半年没写android项目了,一直在做Xamarin.iOS的开发),原来7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限。 直接贴
Android 7.0调用相机/相册/裁剪
Android 调用相机/相册/裁剪,6.0需要申请权限,7.0有路劲安全问题
Android 7.0调用相机问题_共享路径
Android7.0调用相机报错,这是报的错误最开始以为是权限问题,所以针对6.0以上版本加了动态权限。重装了应用。问题依旧。仔细看了下日志,并各种谷歌。发现是共享路径问题。 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/PictureS...
android7.0以上调用相机和相册
 在Fragment中使用时回传要放到嵌套Fragment的Activity里面 private static final int CODE_GALLERY_REQUEST = 0xa0; private static final int CODE_CAMERA_REQUEST = 0xa1; private static final int CODE_RESULT_...
Android 7.0调用相机拍照并获取图片路径
参考内容来源于《第二行代码》(第二版) 按钮点击事件 private Uri photoUri; //相机拍照返回图片路径 private Uri uri; private File outputImage; private int REQUEST_CODE_TAKE_PICTURE = 0; tv_camera.setOnClickListener(new ...
android 7.0以上获取图片工具类
由于android版本升级,对权限要求越来越多,针对这个问题而产生一个工具类来处理这个问题。首先需要在AndroidManifest.xml 中添加权限,和7.0以上系统的文件获取权限&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res...
安卓7.0以上版本更新apk报错
由于项目需求,项目组的老代码需要推翻重写,现以7.0系统基础上,安装apk时崩溃了,异常: FATAL EXCEPTION: main                                                                    Process: com.hx.newzszz302, PID: 27179                        
Android调用相机
Android调用相机并按照给定的名称重命名
在Android 7.0 以上 对图片进行裁剪适配的报错
报错 : android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/GalleryFinal/IMG20170720094945.jpg exposed beyond app through ClipData.Item.getUri() 主要是由于在Android 7.0以后,用了Content Uri
android调用相机
Android中实现拍照有两种方法,一种是调用系统自带的相机,然后使用其返回的照片数据。还有一种是自己用Camera类和其他相关类实现相机功能,
编译Android 7.0 内核报错
编译Linux-4.9.11内核时遇到:“error : openssl/bio.h :No such file or folder” 解决方法:  sudo apt install libssl-dev
Android分享文件兼容7.0以上系统
部分用户反馈分享功能用不了,然后仔细检查了一下,看着代码,愣是没看出毛病来,然后查了一下,才发现不少小伙伴也出现了这个问题,原因是Android7.0以上系统对文件的权限做了某些安全方面的限制,也就是直接通过Uri.fromFile这个方式将path抓缓存uri是不能用了。解决问题的大概思路就是,配置一个本APP对应的专门的路径,然后每次需要分享文件的时候,拷贝一份放到这个目录下,然后通过File...
Android 6.0 7.0及以上 动态权限
android 6.0版本开始,google粑粑处于安全性考虑,敏感的权限只在mainfest注册已经不可以了(例如摄像头权限,定位权限等等),需要在代码中动态注册。 以下对权限做一些介绍(转载): 以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。 group:android.permission-group.CONTACTS
Android 自动化测试框架 Robotium--solo 7.0及以上差异
Android自动测试框架 Robotium 在Android 7.0及以后的版本中,通过 solo.getView(int index) 方式获取当前屏幕上的某个空间时候跟之前版本有所差异。 在7.0之前的版本,如果当前屏幕上有Dialog弹出,而且需要查找的View恰好在Dialog上面,会按照从左到右的顺序,从0开始计算View的位置(也就是index值)。 但是在7.0版本,计算的顺
Android 7.0及以上广播监听网络状态
在Android 7.0及以上的系统移除了三项隐式广播,其中就有 ConnectivityManager.CONNECTIVITY_ACTION(android.net.conn.CONNECTIVITY_CHANGED), 这里除了说明Android 7.0的网络监听策略外,也会列出Android 7.0以下版本的网络监听策略。 一、Android 7.0及以上设备网络状态监听 public c...
Android 多语言切换,适配7.0以上(8.0)
最近公司项目也开始做国际版本,正好我来负责适配,刚开始以为就是简单的新增几套词条资源,更改一下app的语言环境, 然而测试的时候发现,问题太多了,,,,, 百度 Google搜了很多,借鉴了很多适配的方案,目前为止,总算是稳定了很多,记录一下: 1.首先是首次安装获取 手机系统语言,并且给 app 环境也保存个 语言环境,之后 app 的语言就和 手机系统的 没关系了 2.之后每次通过按钮...
android 7.0以上版本,8.0安装apk
android 7.0行为变更中系统权限的更改里面提到: 传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider。 所以我们在安装apk的时候不能全部使用setDataAndType了,在7.0之后的系统要使用FileP...
Android 7.0 以上 安装 apk 的方法
1.安装apk方法 /** * * @param context 上下文 * @param url apk安装路径 */ public static void doInstall(Context context, String url) { File apkFile = new File(url); Intent intent = new Intent(Intent.ACTION_...
android 7.0以上调用系统播放器
实现: 1.新一个类并继承 FileProvider 类,不做其他事情 public class AppFileProvider extends FileProvider { } 2.AndroidManifest.xml 配置: &amp;lt;!-- 7.0适配临时文件申请 --&amp;gt; &amp;lt;provider android:na...
Android 7.0 以上拍照,相册,剪切
第一步:引入 compile('com.kevin:crop:1.0.2') { exclude group: 'com.android.support', module: 'appcompat-v7' } 第二步:检查拍照,写入权限; 第三步: 1.拍照:Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE...
Android 7.0以上安装APK的问题
创建一个类继承FileProvider。在Androidmanifest中注册这个类; &amp;lt;provider android:name=&quot;.***.MyFileProvider&quot; android:authorities=&quot;${applicationId}.fileprovider&quot; android:exported=&quot;false&quot; an...
Android调用相机拍照录视频录音以及存储,7.0以上及以下都可使用。
在开头,先说一下在imageVIew中如何显示文件中存储的视频的第一帧的图片。很简单,几行代码就搞定。 MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(user.getPath()); Bitmap bitmap = media.ge...
Android 7.0调用相机拍照,返回后显示拍照照片
Android 7.0调用相机拍照,返回后显示拍照照片,并显示到手机相册中
Android 6.0以上动态访问权限调用相机(隐式跳转)
Android6.0更新后,推出了动态权限管理。以往我们将涉及到的权限都写在清单文件中直接进行配置,对于一些敏感的权限,写程序时必须在程序中进行声明。相机和相册选择图片都涉及用户隐私的敏感权限,所以必须在程序中进行声明。 自定义一个点击事件 : imgPhoto.setOnClickListener(new View.OnClickListener() { @Ov...
Android 调用相机和调用图库
调用相机 Intent intent=new Intent(&quot;android.media.action.IMAGE_CAPTURE&quot;); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,...
基础Android之调用相机和相册
因为Android6.0之后,Android系统的安全级别升级,我们的项目都需要去适配Android6.0和Anroid7.0,Android6.0加入了运行时权限申请,Android主要对SD卡的读写做了更加严格的要求,所以本来简单的调用相机和从相册选择一张图片的逻辑便的稍微复杂了那么一点。     言归正传,我们先来谈谈如何调用相机吧。      调用相机 //调用g
Android调用相机和相册
调用相机Intent camera = new Intent();//实例化一个意图实例 camera.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(album,2);//设置onActivityResult消息,此处的2是随便设置的调用相册Intent album = new Intent(Intent.ACT
android 调用相机,相册
/** * capture new image */ protected void selectPicFromCamera() { if (!EaseCommonUtils.isSdcardExist()) { Toast.makeText(getActivity(), R.string.sd_card_does_not_ex...
Android调用相机保存图片到相册
项目中需要使用相机拍照然后保存到相册中,然后保存后却发现相册中并没有这张图片,但是从相册的文件夹中可以看到。这说明相册没有及时刷新才会这样的。搜寻前辈的答案发现有两种解决方案,第一种是发送广播然后通知相册刷新,第二种是使用MediaScannerConnection 类来刷新。但在Android 4.4以上版本中第一种方法不行,会抛出安全异常。 发送广播会抛出异常: sendBroadcast(ne
Android调用相机拿到图片
我们平时会调用相机拿到图片,但是,调用相机容易,当我们拿到图片时,拿到的往往是缩略图,那么,当我们 用到高清原图的时候又该怎么办呢? 1.布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tool
android 调用相机和相册
android 调用相机和相册,里面用了两种方式。一种是郭霖的,但不能适配小米,另一种是自己找的,亲测小米通过
android调用相机拿到原图
android调用相机拿到原图。
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法