Android N 文件系统权限的变化
为了提高私有文件的安全性,在targetSdk版本为N或者以后版本的app中,其私有目录将会限制访问。这可以防止私有文件元数据的泄露,比如文件大小或者是文件是否存在。但这给开发者带来了很多不利的影响:
文件的owner不能放宽文件权限,如果你使用MODE_WORLD_READABLE或者 MODE_WORLD_WRITEABLE操作文件,将会触发SecurityException。
当你跨package域传递file://的URI时,接收者得到的将是一个无权访问的路径,因此,这将会触发FileUriExposedException。对于这类操作,官方推荐的方式是使用FileProvider,当然你也可以使用ContentProvider。这里只看文字理解起来可能有点小困难,所以我将以调用系统拍照为例说明下:在targetSdk为Android N之前的系统版本时,你可以使用如下方法调用系统相机拍照并存入指定路径中。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri uri = Uri.fromFile(sdcardTempFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
当你将targetSdk设置为Android N时,很不幸,在执行到这段代码时app就crash了,crash便是FileUriExposedException。
方法一:
把代码修改下,使用ContentProvider方式传递uri,这样在Android N上便可以正常运行了。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues contentValues = new ContentValues(1);
contentValues.put(MediaStore.Images.Media.DATA, sdcardTempFile.getAbsolutePath());
Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
方法二:
通过FileProvider解决
分享到:
相关推荐
Android8.0以下手机自带的android-system-webview版本过低使用
在Android开发中,调用相机拍照和选择相册照片是常见的功能,这涉及到Android系统级别的交互和权限管理。本文将详细讲解如何在Android Studio中实现这两个功能,并将获取的图片进行存储。 首先,我们需要在...
这是github的项目源码地址。Android Studio2.3.3调用系统的Camera实现拍照功能,并将照片保存到本地内存卡中
down2mobile.net_ksoap2-android-assembly-2.4-jar-with-dependencies.jar 用于方方便调用web service
1.android 版的opencv-4.5.5 sdk; 2.含有opencv-contrib-4.5.5 扩展模块;...3.可以在android studio 中加载,通过java 层调用,也可以添加so库+头文件的方式在jni 层调用; 4.适用于arm64-v8a架构,即64bit cpu。
本文将详细讲解如何在Android的Webview中调用相册和拍照功能,以实现H5与原生Android应用的深度集成。 首先,我们需要了解`WebView`的基本用法。`WebView`是Android SDK中的一个类,它可以加载URL,展示HTML页面,...
在Unity游戏开发中,有时我们需要将游戏与移动设备的系统功能进行交互,比如调用Android设备的相册来选择图片。这个过程涉及到Unity与Android原生代码的互操作性,通常通过Java插件或者Android插件系统实现。下面将...
此源码为android原生调用uniapp插件,android开发工具为androidStudio,uniapp是vue写的,用hBuilder工具。适合使用vue做界面,java为后台的android应用程序,弥补了hBuilder uniapp打包次数限制,程序实现了android...
在Android应用开发中,涉及到用户交互时,常常需要调用系统相机或相册来获取图片,然后进行裁剪处理,并最终上传至服务器。这个过程涵盖了多个关键知识点,包括权限管理、Intent启动相机与相册、图片裁剪、文件操作...
在Android Studio和Unity之间的交互中,调用相机和相册功能是常见的需求,尤其是在开发混合式移动应用时。本文将详细讲解如何实现这一功能,并针对Android 6.0及以上版本的权限管理进行适配。 首先,理解Android ...
Android 调用webService接口 。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。PC版本的WEbservice客户端库非常丰富,例如Axis2,CXF等,但这些开发包对于Android系统...
【TakePicture】项目分为两大部分...实测:android 8、9、10、11、13以及鸿蒙系统有效。 机型:小米、OPPO、VIVO、华为手机。 1. 上传头像并裁剪。 2. 上传多张照片并做压缩处理,图片可实现在线预览,伸缩放大等功能。
Android Support Library v7 AppCompat库是Google为了兼容早期Android版本而推出的一个重要组件,它使得开发者可以将最新的Android设计元素和功能应用到Android 2.1(API级别7)及以上的设备上。此库包含了丰富的...
Android WebView调用本地相册的方法 Android WebView调用本地相册的方法主要是指在Android应用程序中使用WebView组件调用本地相册,以便用户可以选择和上传图片。这个方法是非常有价值的,特别是在移动端开发中,...
android webview调用系统相机和图库支持5.0通过了小米2s(android5.0.2)小米4(android 4.4.4)还有LG的nexus(android 5.0)的测试,在三星GT-I9300I(android 4.3 在这款手机上测试的时候,拍照后有的时候在...
3. **ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar** 这个jar文件是ksoap2的完整版本,其中包含了所有依赖,避免了因为缺少依赖而引发的运行时错误。在Android Studio项目中,你可以将这个jar文件添加...
在Android平台上,音频处理是一个重要的领域,特别是在实时通信或者语音识别等应用场景中。 Speex是一种开源的音频编解码器,特别适合用于语音通信,因为它提供了高质量的音频压缩以及噪声抑制和回声消除功能。本篇...
Delphi XE5 Android 调用照相机获取拍的照片 Delphi XE5 是一款功能强大且流行的开发环境,它提供了许多优秀的功能,包括对 Android 平台的支持。在 Android 平台上,Delphi XE5 提供了许多有用的组件和 API,允许...
配置环境:vs2012 jdk jre sdk xamarin mono ...实现功能:实现xamarin mono for android调用webservice接口登录,界面简单布局,使用android样式,自建webservices接口应用程序 关键字:xamarin mono http web 接口
1.android 版的opencv-4.5.5 sdk; 2.含有opencv-contrib-4.5.5 扩展模块;...3.可以在android studio 中加载,通过java 层调用,也可以添加so库+头文件的方式在jni 层调用; 4.适用于armeabi-v7a架构,即32bit cpu。