android 5.0 sd卡读写,如何使用为Android 5.0(Lollipop)提供的新SD卡存取API?

很多好的问题,让我们深入。:)

你如何使用它?

这是一个伟大的教程与KitKat中的存储访问框架交互:

在Lollipop中与新的API交互非常相似。要提示用户选择目录树,您可以启动这样的意图:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);

startActivityForResult(intent, 42);

然后在您的onActivityResult()中,您可以将用户选择的Uri传递给新的DocumentFile辅助类。这里有一个快速示例,列出了挑选的目录中的文件,然后创建一个新文件:

public void onActivityResult(int requestCode, int resultCode, Intent resultData) {

if (resultCode == RESULT_OK) {

Uri treeUri = resultData.getData();

DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);

// List all existing files inside picked directory

for (DocumentFile file : pickedDir.listFiles()) {

Log.d(TAG, "Found file " + file.getName() + " with size " + file.length());

}

// Create a new file and write into it

DocumentFile newFile = pickedDir.createFile("text/plain", "My Novel");

OutputStream out = getContentResolver().openOutputStream(newFile.getUri());

out.write("A long time ago...".getBytes());

out.close();

}

}

DocumentFile.getUri()返回的Uri足够灵活,可以与不同的平台API一起使用。例如,您可以使用Intent.setData()与Intent.FLAG_GRANT_READ_URI_PERMISSION共享它。

如果要从本机代码访问Uri,可以调用ContentResolver.openFileDescriptor(),然后使用ParcelFileDescriptor.getFd()或detachFd()获取传统的POSIX文件描述符整数。

如何检查是否可以访问文件/文件夹?

默认情况下,通过存储访问框架返回的Uris意图不会在重新启动后持久化。平台“提供”持久化权限的能力,但是您仍然需要“获取”权限,如果你想要的。在上面的示例中,您可以调用:

getContentResolver().takePersistableUriPermission(treeUri,

Intent.FLAG_GRANT_READ_URI_PERMISSION |

Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

您可以随时通过ContentResolver.getPersistedUriPermissions()API找出您的应用可以访问的持久授权。如果您不再需要访问持久化Uri,则可以使用ContentResolver.releasePersistableUriPermission()释放它。

这是在KitKat吗?

不,我们不能追溯地向平台的旧版本添加新功能。

我可以看到哪些应用程序有权访问文件/文件夹?

目前没有显示此内容的UI,但您可以在adb shell dumpsys活动提供程序输出的“Granted Uri Permissions”部分中找到详细信息。

如果在同一设备上为多个用户安装了应用,会发生什么情况?

Uri权限授予在每个用户的基础上隔离,就像所有其他多用户平台功能一样。也就是说,在两个不同用户下运行的同一个应用程序没有重叠或共享Uri权限授予。

权限可以撤销吗?

支持DocumentProvider可以随时撤销权限,例如删除基于云的文档时。发现这些撤消的权限的最常见方法是当它们从上面提到的ContentResolver.getPersistedUriPermissions()中消失时。

当针对授权中涉及的任一应用程序清除应用数据时,也会撤销权限。

将要求在所选文件夹上递归授权工作吗?

是的,ACTION_OPEN_DOCUMENT_TREE意图让您递归访问现有和新创建的文件和目录。

这是否允许多重选择?

是的,自KitKat以来支持多重选择,并且您可以在启动ACTION_OPEN_DOCUMENT意图时通过设置EXTRA_ALLOW_MULTIPLE来允许它。您可以使用Intent.setType()或EXTRA_MIME_TYPES缩小可以选择的文件类型:

有没有办法在模拟器上尝试新的API?

是的,主共享存储设备应该出现在选择器中,甚至在模拟器上。如果您的应用程序只使用存储访问框架访问共享存储,您不再需要READ / WRITE_EXTERNAL_STORAGE权限,可以删除它们,或使用android:maxSdkVersion功能仅在较旧的平台版本上请求它们。

当用户用另一个SD卡替换SD卡时会发生什么?

当涉及物理介质时,底层媒体的UUID(例如FAT序列号)总是被烧录到返回的Uri中。系统使用它将您连接到用户最初选择的媒体,即使用户在多个插槽之间交换媒体。

如果用户在第二张卡中交换,您需要提示您访问新卡。由于系统会记住基于每个UUID的授予,如果用户以后重新插入,您将继续先前授予对原始卡的访问权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android /data/system/dropbox,Android导出dropbox日志

文章内容已重新排版:Android导出dropbox日志,请到该链接浏览,谢谢支持。大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了。但是作为分析anr重要依据的必然离不开dropbox日志。问题来了,dropbox文件…

pgsql thinkphp5_thinkphp 连接postgresql

PHP连接:php.ini中将extensionphp_pgsql.dll前面的分号去掉,然后设置extension_dir指向php文件下的ext文件夹。正常情况下这样php就可以连接postgres了,但是我的仍然出错,提示“Fatal error: Call to undefined function pg_conne…

android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出

通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多。实验目的:用Android实现蓝牙连接通过Arduino串口输出信息这次使用的是蓝…

esrgan_港中文-商汤联合实验室:ECCV2018 PIRM-SR 超分辨率比赛冠军:ESRGAN(已开源)...

Summary:中科院和京东AI研究院提出:改进SRN人脸检测算法,目前业界最强!Author:AmusiDate:2019-02-09微信公众号:CVer原文链接:香港中文大学-商汤联合实验室:ECCV2018 PIR…

联通物联卡为什么没有网络_联通物联卡的资费和优势怎样

近年来,物联网的发展如火如荼,许多物联网卡应用不断兴起,中国移动、中国电信、中国联通都加入了物联网这一事件,中国联通物联网卡和腾讯将联网网卡升级为TUSISIM网卡,这种新的联通TUSI物联网卡也可以理解为一种新的身份…

android中如何新建一个activity,《Android Activity》活动的介绍和创建

Activity 是什么Android 有四大组件:Activity、Service、Broadcast Receiver 和 Content Provider。Activity,活动,即用来承载用户界面的容器,Android 四大组件之一。我们在 APP 里面看到的页面就需要一个 Activity,页…

ffmpeg 音乐循环_[宜配屋]听图阁

ffmpeg -i out3.mp4 -i music3D.wav -filter_complex [1:a]alooploop-1:size2e09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp4参数详细介绍:ffmpeg//输入视频,最好选一个大于一分钟的尝试-i out3.mp4//输入背景音,最好短一点,方便…

android qq红点,Android高仿QQ小红点功能

先给大家展示下效果图:绘制贝塞尔曲线:主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~整体思路:1、当小红点静止时,什么都不做,只…

modern android5.1,Modern摩登印

Modern摩登印可以帮助小伙伴们轻松制作手机相册,超多素材为你提供,支持个性化设置,将照片一秒变高大上的海报,还能支持音乐相册效果,超多原创音乐随你挑选,结合潮流相册模板,让你的作品更精美哦…

android1.6,令人遗憾的Android 1.6系统_戴尔 Mini5(Streak)_手机其它OS-中关村在线

令人遗憾的Android 1.6系统虽然Dell Streak上周五刚刚在美国地区上市,但实际上这款产品的开发时间已经很长了。早在去年Dell的Mini 3i上市之前这款被称之为Dell Mini 5的产品就已经出现在大家的视野之中,而当时其搭载的就是在当时看来还是十分先进的Andr…

java第七章jdbc课后简答题_javaEE简答题答案

一、简答题(30分,6题*5分)(一)第一章概述1.三层体系结构的优点有哪些?p2(1)安全性高(2)易维护(3)快速响应(4)系统扩展灵活2.两层体系结构的缺点有哪些?p2-3(1)安全性低(2)部署困难(3)消耗系统资源3.简述Java EE的“组件-容器”编程思想。(P5&…

jupyter配置到服务器_服务器端jupyter notebook映射到本地浏览器的操作

1、远程服务器上安装jupyter notebook(配置jupyter_notebook_config.py文件)sudo pip install jupyter2、远程服务器(8890端口,没有下面括号中内容默认在服务器8888端口打开jupyter notebook,下面将使用默认端口8888)启动jupyter notebookjup…

android 控制word,Android使用POI进行Word操作(一)

操作步骤步骤一:引用相关POI库步骤二:创建POI中的word文件对象步骤三:调用word文件对象的方法对文件进行操作步骤一:引用相关的POI库吐槽一下,这一步是最坑的本人尝试了很多版本组合,最新的版本提示class重…

go编译so win10_windows搭建Go语言交叉编译环境

我的环境:64位 windows 10go version go1.9.1 windows/amd641. 安装MinGW-w64我的系统是64位win10,早期版本的MinGW我安装后编译go的相关工具会一路报错,换成mingw-w64就可以顺利编译,下载地址:http://sourceforge.net…

android car bt模块,大谷蓝牙小车BT Car/Android Car手机控制 重力控制小车 安卓操控小车...

产品介绍:Android蓝牙遥控小车平台。是通过Android手机以蓝牙方式操控小车前进后退左转右转等,具有重力感应操控、触摸屏虚拟操控、虚拟摇杆三种控制模式。并且还具有呼吸灯、电源指示灯、蓝牙连接指示灯、速度等级指示灯等状态指示。小车自带锂电池及US…

html语言怎么设计出来的,(正式)网页设计语言HTML.ppt

(正式)网页设计语言HTML第二章网页设计语言HTML HTML基础知识 页面基本信息和布局 文本修饰 超文本链接 表格 图像 表单 多媒体 什么是HTML? HTML是Hyper Text Markup Language的英文缩写,翻译为“超文本标识语言”。它是一种用来制作超文本文档的简单标…

Dijkstra(迪杰斯特拉)算法总结

知识概览 Dijkstra算法适用于解决所有边权都是正数的最短路问题。Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。朴素的Dijkstra算法时间复杂度为,适用于稠密图。堆优化版的Dijkstra算法时间复杂度为,适用于稀疏图。稠密图的边数m和是一…

二元二次方程例题_二元二次方程组-解法-例题

对“二一”型二元二次方程组中形如的方程组,可以根据一元二次方程根与系数的关系,把x、y看做一元二次方程z2-azb0的两个根,解这个方程,求得的z1和z2的值,就是x、y的值。当x1z1时,y1z2;当x2z2时&…

wxwidget编译安装_wxWidgets的安装编译、相关配置、问题分析处理

一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)wxWidgets是一个开源的跨平台的C构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK或Motif的Unix和MacOS。相当于大家熟悉的 VC。二、wxWidge…

馀承东发布鸿蒙,鸿蒙系统一无是处?鸿蒙有何优势?

华为方面官宣,将于6月2日晚8点,举行鸿蒙操作系统及华为全场景新品发布会,届时,大家期待已久的鸿蒙操作系统也将正式亮相。鸿蒙OS有别于传统OS,具有四大技术特性,这也是鸿蒙的四大优越之处。首先&#xff0c…