android 系统相册调用,各版本的区别总结
请求系统相册有三个Action:
(注意以下 图库(缩略图) 和 图片(原图) 的区别)
ACTION_OPEN_DOCUMENT 仅限4.4或以上使用 默认打开原图
ACTION_GET_CONTENT 4.4以下默认打开缩略图 。 以上打开文件管理器 供选择,选择图库打开为缩略图页面,选择图片打开为原图浏览。
ACTION_PICK 都可用,打开默认是缩略图界面,还需要进一步点开查看。
下面会详细介绍他们在不同版本系统中的测试结果区别:
测试系统:adroid 4.4.2 夜神模拟器
content://com.android.providers.media.documents/document/image%3A1372>>ACTION_OPEN_DOCUMENT从图片获取,打开是文件管理器的图片选择器,但是只能选择图片不能选图库,也不能选择其他文件
content://com.android.providers.media.documents/document/image%3A1372>>ACTION_GET_CONTENT从图片获取 打开的还是文件管理器,可以选择图库也可以选择图片
content://media/external/images/media/1372>>>>>>>>》》》ACTION_GET_CONTENT从图库获取
content://media/external/images/media/1541>>>>>>>>》》》》ACTION_PICK默认打开图库,没法选择图库还是图片
综上: uri只跟 图库还是图片选择有关,跟action无关,是选择图片还是图库才跟action有关
测试系统: android 4.4.4
ACTION_OPEN_DOCUMENT ACTION_GET_CONTENT都是直接打开图片,页面比较漂亮
ACTION_PICK默认打开图库,界面比较丑
测试系统:android 6.0 华为
content://com.android.providers.media.documents/document/image%3A35144>>>ACTION_OPEN_DOCUMENT 不可选图库还是图片
content://com.android.providers.media.documents/document/image%3A176> ACTION_GET_CONTENT选择图片中的
content://media/external/images/media/35144>>>>>>>>》》》》ACTION_GET_CONTENT选择图库中的
content://media/external/images/media/35144>>>>>>>>》》》》》ACTION_PICK默认打开图库,没法选择图库还是图片
测试系统:android4.2.1 华为
ACTION_GET_CONTENT 弹出图库和文件管理器,供选择
ACTION_OPEN_DOCUMENT 直接崩,不能使用
ACTION_PICK 直接打开图库
综上得出 :
结论一:
ACTION_OPEN_DOCUMENT 直接打开的是图片
ACTION_GET_CONTENT 打开后可选择是图库获取还是图片获取
ACTION_PICK 直接打开的就是图库
结论二:
从图片获取到的uri 格式为:content://com.android.providers.media.documents/document/image%3A35144>>>
cong图库获取到的uri格式为:content://media/external/images/media/35144>>>>>>
结论三:
4.4.4以上版本android系统,图片的界面比图库的界面好看。
结论四:
content://media/external/images/media/35144这种格式,转换成路径后可以直接用
content://com.android.providers.media.documents/document/image%3A35144这种格式,转换成路径后不能直接用。
结论五:
ACTION_OPEN_DOCUMENT不能在android4.4以下版本用,否则会crash,我的低版本手机系统有问题,没办法打印log所以看不到崩溃原因,猜测是取不到数据,报空
android 系统相册调用,各版本的区别总结的更多相关文章
- Android 系统架构 和 各个版本代号介绍
一.Android 系统架构: 1. linux内核层Android 基于Linux内核,为Android设备的各种硬件提供底层驱动 比如: 显示驱动.音频.照相机.蓝牙.Wi-Fi驱动,电源管理等 ...
- Android系统中Parcelable和Serializable的区别
转载:https://greenrobot.me/devpost/android-parcelable-serializable/ 进行Android开发的时候,我们都知道不能将对象的引用传给Acti ...
- 【安卓开发】Android系统中Parcelable和Serializable的区别
http://greenrobot.me/devpost/android-parcelable-serializable/ 进行Android开发的时候,我们都知道不能将对象的引用传给Activiti ...
- Android系统中Parcelable和Serializable的区别,自动化实现Parcelable接口的插件
Parcelable和Serializable的区别 参考地址:http://greenrobot.me/devpost/android-parcelable-serializable/ 由于最终的区 ...
- 解决android应用程序适用新老android系统版本方法
老的android系统不能运行高版本系统的新方法,为了解决这个问题: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ...
- "浅谈Android"第一篇:Android系统简介
近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...
- 『与善仁』Appium基础 — 1、Android系统的测试环境搭建
目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...
- 走进Android系统
一.Android背景 [Android定义] Android是Google公司在2007年11月5日公布的基于Linux平台的开源手机操作系统. [发展历程] 2005年,Google收购企业And ...
- Android系统编程入门系列之应用初始化Application
在上一篇文章中我们了解到Android系统启动应用的时候,会首先加载AndroidManifest.xml清单文件中的一系列信息,在清单文件中如果不指定<application></ ...
随机推荐
- ORA-19693: 已包括备份片段
使用rman异机恢复数据时,报"ORA-19693: 已包括备份片段..."错误. 执行的rman命令: RMAN> run{ 2> allocate channel ...
- MySQL数据复制的校验
在5.6之前,管理员只能通过ssl实现检校验5.6中,可以使用CRC32检查和来保证master和slave的数据的完整性.校验信息记录在master的二进制日志中和slave的relay日志中. m ...
- Emacs 列编辑
copy from http://chandlewei.blogbus.com/logs/15583440.html 不敢独享,与大家分享.也可以在Emacs中用C-x C-h列出全部命令,查找C-x ...
- Java线程同步和线程通信
一.线程同步 当多个线程访问同一个数据时,非常容易出现线程安全问题.这时候就需要用线程同步. 不可变类总是线程安全的,因为它的对象状态是不可改变的,但可变类对象需要额外的方法来保证线程安全. 1.同步 ...
- IDEA文件编码修改
上图标注 1 所示,IDE 的编码默认是 UTF-8,Project Encoding 虽然默认是 GBK,但是一般我都建议修改为 UTF-8.上图标注 2 所示,IntelliJ IDEA 可以对 ...
- Leetcode: Nth Digit
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note: n i ...
- [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- poj: 2739
挺简单,生成素数表之后建个全素数的vector,然后..随便玩咯 #include <iostream> #include <stdio.h> #include <str ...
- 控件ListView
ListView的简单用法,先在布局文件中添加ListView控件: 接下来修改MainActivity中的代码: 由上面的代码可以知道,数据是无法直接传递给ListView的,需要借助适配器来完成. ...