
Intent intent= new Intent(IntentACTION_GET_CONTENT);
intentsetDataAndType(MediaStoreImagesMediaEXTERNAL_CONTENT_URI, "image/");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
表示调用相册选择
如果你要选择文件:
Intent intent= new Intent(IntentACTION_GET_CONTENT);
intentsetDataAndType(MediaStoreImagesMediaEXTERNAL_CONTENT_URI, "file/");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
一般安卓手机的相机功能都会有固定的存放路径,这个位置默认为:/sdcard/DCIM/100Andro或者/sdcard/DCIM/Camera,这里的sdcard是指手机中的SD卡,在电脑中显示的为可移动磁盘。根据不同品牌安卓手机的后期开发,文件夹名称可能不太一样,但一般是在DCIM目录文件夹里边,当然也会有特别,例如在酷派手机中手机拍照的是存放在根目录中的Photo中。
首先,打开您手机上的相机,点击设置按钮,里面会有一个选择存储位置,
一般默认是存储在手机内存,可以进行修改,存到SD卡中。
通过数据线连接到电脑后,一般是一个叫DCIM。
takePictureIntentresolveActivity(getPackageManager()) != null
在官方文档中有描述:startActivityForResult()方法受到调用resolveActivity()的条件的保护,该方法返回可处理该意图的第一个活动组件,执行此检查很重要,因为如果您使用没有应用程序可以处理的意图调用startActivityForResult(),则您的应用程序将崩溃。所以只要结果不为空,就可以安全的使用意图,大概意思是检测手机中有没有相机。
另外一种检测相机的方法是
required=true 表示要安装该应用,手机必须有摄像头该硬件。要不然不允许安装
鸿洋的博客关于android70 以及 40 拍照封装的处理(点击跳转)
类似介绍比较好的文章推荐-Android 调用系统相机拍照攻略(已适配Android N)
1拍照 (对于70以上的版本,不在允许直接访问uri)
`
若不指定输出路径intentputExtra(MediaStoreEXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通过
`
可以拿到uri,但获得的是被压缩过的。若指定intentputExtra(MediaStoreEXTRA_OUTPUT, uri);输出路径,则此处的intent为null,但可以使用我们存的uri读取照片,此时的照片没有被压缩。
2从相册中读取照片, 方法:
`
`
即使设置 intentputExtra(MediaStoreEXTRA_OUTPUT, getTempUri(srcActivity));输出路径,仍然不能从此路径中读取,只能在onActivityForResult()中通过eventuri = intentgetData();方式获得uri。
此种现象也好理解,拍照时产生新的,自然可根据设置的uri进行保存,而读取相册时,已经在目录中不能转移到自己设定的uri中。
Androidmanifestxml中
`
在 res/xml/provider_pathsxml
`
<xml version="10" encoding="utf-8">
<paths>
<external-path name="JDTobs" path=""/>
<files-path name="name" path="path" />
<cache-path name="name" path="path" /> <external-path name="name" path="path" />
<external-files-path name="name" path="path" />
<external-cache-path name="name" path="path" /> </paths> `
读取uri
在Android Studio中,可以使用Intent调用系统相册。以下是具体步骤:
1 在你的Android Studio项目中创建一个Button或ImageView,用于触发打开相册的事件。
2 在Button或ImageView的OnClick事件中添加以下代码:
Intent intent = new Intent(IntentACTION_PICK, androidproviderMediaStoreImagesMediaEXTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK_IMAGE_REQUEST);
其中,PICK_IMAGE_REQUEST是一个整数常量,用于在Activity返回结果时进行识别。
3 在Activity中添加以下代码,以处理从相册返回的结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
superonActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && datagetData() != null) {
Uri uri = datagetData();
// 使用uri加载
}
}
在这个方法中,我们检查requestCode是否等于PICK_IMAGE_REQUEST,resultCode是否等于RESULT_OK,以及data和datagetData()是否不为null。如果这些条件都满足,我们就可以使用datagetData()方法获取从相册中选择的的Uri,并使用这个Uri加载。
注意:在使用打开相册的Intent时,需要在AndroidManifestxml文件中添加以下权限:
<uses-permission android:name="androidpermissionREAD_EXTERNAL_STORAGE"/>
这个权限用于读取存储在设备上的。
以上就是关于android中怎么读取系统相册全部的内容,包括:android中怎么读取系统相册、如何获得android手机拍照后照片的存放目录、Android 拍照获取缩略图以及完整图片(适配androidN)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)