首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android 10及以上版本的android中获取采集图片和图库图片的真实路径

在Android 10及以上版本中,由于隐私和安全的考虑,访问外部存储的方式发生了变化。在这些版本中,应用程序无法直接访问其他应用程序的私有目录或文件。因此,获取采集图片和图库图片的真实路径需要通过不同的方法来实现。

  1. 获取采集图片的真实路径: 在Android 10及以上版本中,获取采集图片的真实路径需要使用MediaStore类。以下是获取采集图片的真实路径的步骤:
  • 添加权限:在AndroidManifest.xml文件中添加以下权限:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 使用MediaStore类获取图片的真实路径:
代码语言:txt
复制
// 在Activity中调用以下代码
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
    File photoFile = createImageFile();
    Uri photoUri = FileProvider.getUriForFile(this, "com.example.fileprovider", photoFile);
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
    startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}

// 创建图片文件
private File createImageFile() throws IOException {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(imageFileName, ".jpg", storageDir);
    currentPhotoPath = image.getAbsolutePath();
    return image;
}

// 处理拍摄照片的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        // 在currentPhotoPath中获取图片的真实路径
        // ...
    }
}
  1. 获取图库图片的真实路径: 在Android 10及以上版本中,获取图库图片的真实路径需要使用MediaStore类。以下是获取图库图片的真实路径的步骤:
  • 添加权限:在AndroidManifest.xml文件中添加以下权限:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 使用MediaStore类获取图片的真实路径:
代码语言:txt
复制
// 在Activity中调用以下代码
Intent pickImageIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickImageIntent, REQUEST_PICK_IMAGE);

// 处理选择图片的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_PICK_IMAGE && resultCode == RESULT_OK) {
        Uri imageUri = data.getData();
        // 在imageUri中获取图片的真实路径
        // ...
    }
}

需要注意的是,获取到的图片真实路径可能是一个content://类型的URI,而不是传统的文件路径。如果需要使用文件路径,可以通过以下方法将content://类型的URI转换为文件路径:

代码语言:txt
复制
public String getRealPathFromUri(Uri uri) {
    String filePath = "";
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    if (cursor != null) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        if (cursor.moveToFirst()) {
            filePath = cursor.getString(column_index);
        }
        cursor.close();
    }
    return filePath;
}

综上所述,以上是在Android 10及以上版本中获取采集图片和图库图片的真实路径的方法。请注意,由于不提及具体的云计算品牌商,无法提供腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android编程实现保存图片到系统图库方法示例

本文实例讲述了Android编程实现保存图片到系统图库方法。分享给大家供大家参考,具体如下: 最近有些用户反映保存图片之后在系统图库找不到保存图片,遂决定彻底查看并解决下。...Bitmap保存图片到指定路径/sdcard/Boohee/下,文件名以当前系统时间命名,但是这种方法保存图片没有加入到系统图库 第二种是调用系统提供插入图库方法: 复制代码 代码如下:...bitmap对象保存到系统图库,但是这种方法无法指定保存路径名称,上述方法title、description参数只是插入数据库字段,真实图片名称系统会自动分配。...看似上述第二种方法就是我们要用到方法,但是可惜调用上述第二种插入图库方法图片并没有立刻显示在图库,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片。...onScanCompleted(String path, Uri uri) { Log.v(TAG, "scan completed"); msc.disconnect(); } }); 上面代码图片路径不管是通过自己写方法还是系统插入图库方法都可以很容易获取

77431

Android开发,怎样调用摄像机拍照以及怎样从本地图库中选取照片

/判断系统版本号,如果API>19,即Android 4.4版本以上用这个方法处理图片 if (Build.VERSION.SDK_INT >= 19) {...,就是要获取图片真实路径imagepath,然后我们会再提供一个方法将imagepath作为参数来显示图片 String imagepath = null; //android4.4...以上版本,我们获取图片uri不是真实图片uri,是封装过,不能直接用来显示图片,我们要进行解析 Uri uri = data.getData();//通过传入intent参数来获取信息...//进行数据库查询是作为参数,主要是约束我们查询条件 //getImagepath()方法是我们自己提供用来获取图片真实路径 imagepath...获取真实图片路径 //其实selection就是一个约束条件,让我们指定查询哪一行,就好比name=lee,age=18这样 Cursor cursor = getContentResolver

62630

项目需求讨论 - WebView下拍照图片选择功能

Android 5.0以上版本: ? Android 5.0以下版本: ? 都是openFileChooser方法,不同版本里面参数不同。...所以我们这里就要讲二大块: 用户怎么跳到自己想要界面(相机 or 图库) 用户在自己想要界面选择好了图片后 (拍好了照片 or 在图库选择好了图片),如何获取相关图片Uri。...---- 拍照说完了,我们再来看在图库界面选择图片: 其实总体思路拍照是一模一样,无非就是指定Intent是打开了图库Intent。 ? 还是在刚才Android 官网我们可以看到: ?...直接看图片即可,写很详细了,或者大家搜相关关键字也是有很多文章。比如:Android createChooser方法源码简析等。 2.2.3 获取用户在相机或者图库选择图片Uri ?...---- 2.3 Uri ValueCallback 所以我们ValueCallback实例在 WebChromeClient方法里面拿到了,Uri也通过相机或者图库选择下获取到了。

1.9K20

Android打开系统拍照&相册获取头像

Android打开系统拍照&相册获取头像 现在许多应用都有上传头像功能,再次奉上代开系统相册或打开系统相机拍照实现,有的同学在测试小米手机上打开选择相册有奔溃,此代码已完美解决此问题… 楼主,做头像需要经过裁剪之后圆形处理...= null) { //图库 String pathResult = null; // 获取图片路径方法调用 try {...//android各个不同系统版本,对于获取外部存储上资源,返回Uri对象都可能各不一样,所以要保证无论是哪个系统版本都能正确获取图片资源的话...catch (FileNotFoundException e) { e.printStackTrace(); } } } 3.获取图片路径...// 根据系统相册选择文件获取路径 @SuppressLint("NewApi") private String getPath(Uri uri) { // int sdkVersion

2.7K20

android之实现打开相册、拍照录像、播放视频、保存图片到系统相册指定位置、图片压缩

6.0以后对某些涉及用户隐私权限获取需要动态获取,所以首先是检查权限,没有权限则动态申请权限,这里我们需要用到权限是WRITE_EXTERNAL_STORAGECAMERA。...照片"+resultCode+data+requestCode); if (resultCode == Activity.RESULT_OK) { 方式一:自定义路径获取图片 img_show.setImageURI...—— 将Bitmap保存图片到指定路径/sdcard/Boohee/下,文件名以当前系统时间命名,但是这种方法保存图片没有加入到系统图库 public static File saveImage(...——- 调用以上系统自带方法会把bitmap对象保存到系统图库, 但是这种方法无法指定保存路径名称, 上述方法title、description参数只是插入数据库字段, 真实图片名称系统会自动分配...插入图库方法图片并没有立刻显示在图库,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片

5.3K20

H5与原生混合开发总结

如果存在多个H5模块包,如何实现模块包完全更新与部分更新? 针对以上问题,如何建立一个公用工具集(框架?)? 遇到问题解决办法。 OK, 开始吧!...@JavascriptInterface才能将方法暴露出去,然后将包含此方法类对象注入进去,如下一个实际场景, H5需要从Android原生获取用户账号信息,那么可以这么写: 先注入包含对应方法...那么来说说如何在上预览,以及如何将这个路径图片作为文件上传。 下面是选完图片后我们将图片路径回调到JS方法。.../** * 相册获取图片、相机拍照结果回调 * @param {Number} type 类型: 0->图库, 1->相机 * @param {String} imgFilePath...,尤其是使用相机直接拍照取图情况,一张图片可能会有3~10M,直接编码为图片本身会比较耗时,而编码出来字符串会存在于内存,因此很有可能会导致Android端出现内存溢出情况,因此这里可以考虑先压缩后编码

1.4K20

Android 选择相册照片并返回功能实现代码

获取真实图片路径 Cursor cursor = context.getContentResolver().query(uri, null, selection, null, null); if...来获取真实图片路径 Cursor cursor = context.getContentResolver().query(uri, null, selection, null, null); if...,我们做了一个判断,如果是4.4以上系统手机就调用handleImageOnKitKat()方法来处理图片,否则就调用handleImageBeforeKitKat()方法来处理图片。...之所以要这么做,是因为Android系统从4.4版本开始,选取相册图片不再返回图片真是的Uri了,而是一个封装过Uri,因此如果是4.4版本以上手机需要对这个Uri进行解析才行。...当然了,获取图片路径后不推荐直接使用 BitmapFactory.decodeFile(imgPath)来获取bitmap,因为某些图片体积可能很大,直接加载到内存中有可能会导致程序崩溃(我就遇到过了

75310

Android-图片选择,裁剪,压缩,适配高版本

效果展示 效果展示链接 1.图片选取 拍照 我们之前设置拍照保存文件地址Uri,都是直接Intent.putExtra(MediaStore.EXTRA_OUTPUT,文件保存Uri路径),但是...,文件保存Uri路径),代码如下: //相机拍照一个标识,后面用 TAKEPAHTO = 1; // 启动系统相机...图片裁剪压缩 图片裁剪 图片裁剪我们主要看一下starPhotoZoom()这个裁剪方法,代码如下: public void startPhotoZoom(Uri uri) {.../*");//裁剪图片uri图片类型 intent.putExtra("crop", "true");//设置允许裁剪,如果不设置,就会跳过裁剪过程,还可以设置putExtra("...原来7.0一下版本我们,直接调用相机获取图片地址是: file:///storage/emulated/0/temp.jpg文件 然而7.0之后就变成: content://........文件

1.4K30

10款实用Android UI 开发框架

Nine Old Androids 自Android 3.0以上版本,SDK新增了一个android.animation包,里面的类都是跟动画效果实现相关,通过Honeycomb API,能够实现非常复杂动画效果...但如果开发者想在3.0以下版本也能使用到这套API,那么Nine Old Androids就会是你最好选择,该APIHoneycomb API完全一样,只是改变了你使用com.nineoldandroids.XXX...Android-Universal-Image-Loader能为开发者提供多线程图片加载,灵活更改ImageLoader基本配置(最大线程数、缓存方式、图片显示等);图片异步加载缓(内存缓存本地缓存...)存机制;对加载过程实现监听事件处理;配置加载图片显示选项,包括图片圆角处理和加载完成显示动画等功能。...ColorPicker ColorPicker是Android平台颜色拾取器, 可以通过手机摄像头获取图像,或从本地图库获取图像,然后点击所感兴趣颜色,就可以知道所选颜色RGB、HEX、HSV值

2.6K70

android相册选择图片编码实现代码

分之内根据不同系统版本执行不同代码逻辑。因为 android 4.4 是一个文件访问安全处理方式分水岭,4.4以下系统使用直接文件地址,4.4 以上系统使用不再返回真实图片地址了。...所以,代码处理方法就有所不同。4.4以上系统需要对相册返回图片地址进行解析。...data.getData(); String imagePath = getImagePath(uri, null); displayImage(imagePath); } 中间用到获得图片真实路径显示图片方法如下...来获取真实图片路径 Cursor cursor = getContentResolver().query(uri, null, selection, null, null); if(...7.0版本以下系统,直接Uri.fromFile取得真实文件路径;7.0以上版本系统,使用fileprovider封装过Uri再提供出去。

1.3K31

适配AndroidQ拍照读取相册图片实现方法

拍照 图片正常保存 拍照:Android Q之前版本使用,将图片保存到指定文件夹,拍照完成后需要通知相册刷新 拍照代码 // 拍照存放路径 File fileDir = new File(...Android Q之前版本通用拍照代码,有需要可以直接复制就行 将图片保存到沙盒内 沙盒里面操作文件不再需要申请权限 沙盒中新建文件夹只能再系统指定子文件夹中新建 Android Q版本使用,将图片存放到沙盒文件内...,图库无法刷新,无法显示 // 获取图片沙盒文件夹 File PICTURES = getExternalFilesDir(Environment.DIRECTORY_PICTURES);...Q以下版本 if (Build.VERSION.SDK_INT = Build.VERSION_CODES.Q) { //android Q不再使用DATA字段,而用RELATIVE_PATH...到此这篇关于适配AndroidQ拍照读取相册图片实现方法文章就介绍到这了,更多相关AndroidQ拍照读取相册图片内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

2.6K11

笔记53 | 管理系统UI(一)

图1展示了一个图库图片,界面的系统栏都已被淡化(需要注意图库应用完全隐藏状态栏,而不是淡化它);注意导航栏(图片右侧)上变暗白色小点,他们代表了被隐藏导航操作。 ?...在4.1以上版本隐藏状态栏 在4.4以上版本隐藏状态栏 让内容显示在状态栏之后 同步状态栏与Action Bar变化 同时您应该阅读 Action Bar API 指南 Android Design...同步状态栏与Action Bar变化 在Android 4.1以上版本,为了防止在Action Bar隐藏显示时候布局发生变化,你可以使用Action Baroverlay模式。...隐藏导航栏 这节课将教您 在4.0以上版本隐藏导航栏 让内容显示在导航栏之后 本节课程将教您如何对导航栏进行隐藏,这个特性是Android 4.0()版本引入。...在4.0以上版本隐藏导航栏 你可以在Android 4.0以及以上版本,使用 SYSTEM_UI_FLAG_HIDE_NAVIGATION标志来隐藏导航栏。

1.4K40

Android调用系统照相机拍照与摄像方法

但是在使用系统现有相机用用时候,默认会把图片保存到系统图库目录下,如果需要指定图片文件保存路径,需要额外在Intent设置。   ...intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 3、获取系统现有相机拍摄图片   在新开启Activity,如果需要获取返回值,则需要使用startActivityForResult...4、系统现有相机拍摄图片Demo   上面讲解了如何在开发应用中使用系统相机拍摄照片并获得它所涉及到内容,下面通过一个简单Demo演示一下。...在Demo,有两个Button分别以指定路径方式不指定路径方式启动系统相机,并获取返回值显示到ImageView,Demo中注释比较详细,这里不再累述了。...5、系统现有相机拍摄视频   从系统现有的相机应用获取拍摄视频,与获取拍摄图片过程大致相同,但是它除了可以通过putExtra()设置MediaStore.EXTRA_OUTPUT输出路径外,还可以设置其它值

7K21

Android开发实现保存图片到手机相册功能

本文实例讲述了Android开发实现保存图片到手机相册功能。分享给大家供大家参考,具体如下: 有一种很常见需求,当保存图片时候,客户需要在相册里面看到那张图片。...解决这种问题,最简单粗暴方法是,用那台手机拍一张照片,然后找到它,查看它路径详情,直接根据路径用IO流写入,Android SDK Build.BRAND 变量为当前手机品牌,根据不同品牌来做兼容处理...另外值得一提是,图片格式需要为JPEG格式才能显示在相册,我们拍照片也是JPEG格式。下面用代码来实现上述想法。...鉴于目前手机版本普遍为Android 6.0 以上,读写外部存储文件都需要动态申请权限。这部分代码可以在当前需要读写外部存储文件Activity写。...this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName))); } 以上就是保存图片到相册方式

3.9K10

Android 拍照、相册选择、裁剪照片

好了,步入正题,在 Android 调用摄像头拍照获取图片或者是从相册中选取图片是很常见功能,比如某些 APP 上传头像功能就是一个例子。...--> 读取裁剪后图片 获取从相册选择图片: 调用系统图库 --> 得到选择图片 Uri 并裁剪图片然后输出到指定目录 --> 读取裁剪后图片 这里可能有些小伙伴会问了,为什么要调用系统裁剪程序裁剪照片呢...在 startCamera 方法,我们对运行设备 Android 版本进行判断,如果是 7.0 以上,那么我们需要使用 FileProvider 来获取照片输出 Uri,否则的话用以前方法获取就行了...方法来获取这个 Uri, 最后,对于两种获取图片方法,我们都需要调用 cropPhoto 方法来对得到图片进行裁剪,并且最后裁剪图片输出到内存卡以便读取。...最后,当然,别忘了在 Androidmanifest 申请拍照写内存卡内容权限: <uses-permission android:name="android.permission.CAMERA"

5.7K43

android 拍照,图库,相册,上传

android开发, 在一些编辑个人信息时候,经常会有头像这么一个东西,就两个方面,调用系统相机拍照,调用系统图库获取图片.但是往往会遇到各种问题: 1.oom  2.图片方向不对 3.activity...result 时候data == null 4.调用图库时候没找到软件 首先是调用系统拍照,图库代码 package com.chzh.fitter.util;     import java.io.File...;   //在onActivityResult方法根据requestCoderesultCode来获取当前拍照图片地址。...,导致重新create, 普通解决方法可以在sharedpreference里面保存拍照文件路径(onSaveInstance保存),  * 在onRestoreSaveInstance里面在获取出来..., Toast.LENGTH_LONG).show();         return false;     }       /**      * 获取从本地图库返回来时候URI解析出来文件路径

1.5K20
领券