首页
学习
活动
专区
工具
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开发中,怎样调用摄像机拍照以及怎样从本地图库中选取照片

/判断系统版本号,如果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

68030
  • 项目需求讨论 - 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也通过相机或者图库的选择下获取到了。

    2K20

    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_STORAGE和CAMERA。...照片"+resultCode+data+requestCode); if (resultCode == Activity.RESULT_OK) { 方式一:自定义路径中获取图片 img_show.setImageURI...—— 将Bitmap保存图片到指定的路径/sdcard/Boohee/下,文件名以当前系统时间命名,但是这种方法保存的图片没有加入到系统图库中 public static File saveImage(...——- 调用以上系统自带的方法会把bitmap对象保存到系统图库中, 但是这种方法无法指定保存的路径和名称, 上述方法的title、description参数只是插入数据库中的字段, 真实的图片名称系统会自动分配...插入图库的方法图片并没有立刻显示在图库中,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片。

    5.5K20

    H5与原生混合开发总结

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

    1.5K20

    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.5K30

    10款实用Android UI 开发框架

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

    3.1K70

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

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

    1.4K40

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

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

    5.9K43

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

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

    1.5K20

    仿抖音短视频APP源码,实现简单的换头像并保存

    View.OnClickListener { private static final int CHOOSE_PHOTO=2; private CircleImageView image;//一种用于图片圆形化的控件...=null){ image.setImageBitmap(readPac());//如果头像修改过了,内存中已经新的头像图片。         ...ActivityCompat.requestPermissions(My_info.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);                     //以上是访问图库的运行时权限...break;             default: break;         }     }     @Override      //这里是对用户是否同意访问图库的处理     public...",Toast.LENGTH_SHORT).show();         }     } //以上获取图片的绝对路径再获取bitmap实例过程来自《第一行代码 第2版》P299// // // //

    90221

    AndroidQ兼容性适配指南

    AndroidQ android10.jpeg Android 10 中的隐私权变更 隐私权变更 受影响的应用 缓解策略 ✅ 分区存储 针对外部存储的过滤视图,可提供对特定于应用的文件和媒体集合的访问权限...如果应用以Android 10或更高版本为目标平台,则您必须在应用的清单文件中声明ACCESS_BACKGROUND_LOCATION权限并接收用户权限,才能在应用位于后台时接收定期位置信息更新。...及一下的设备使用兼容模式,但Android11及以上的设备无论是覆盖安装还是重新安装都无法使用兼容模式; 可以通过调用 Environment.getExternalStorageState() 查询该卷的状态...分区存储的影响 图片位置信息 一些图片会包含位置信息,因为位置对于用户属于敏感信息, Android 10 应用在分区存储模式下图片位置信息默认获取不到,应用通过以下两项设置可以获取图片位置信息: 在...字段开始废弃,不再表示文件的真实路径。

    7.1K30

    深入探索 Android 内存优化(炼狱级别-上)

    2)、优化内存的意义 3)、避免内存泄漏 4)、优化内存空间 5)、图片管理模块的设计与实现 如果你对以上基础内容都比较了解了,那么我们便开始 Android 内存优化的探索之旅吧。...Android 8.0及以后 1)、使用了能够辅助回收 Native 内存的NativeAllocationRegistry,以实现将像素数据放到 Native 内存中,并且可以和 Bitmap 对象一起快速释放...2)、Android 8.0 为了 解决图片内存占用过多和图像绘制效率过慢 的问题新增了硬件位图Hardware Bitmap。 那么,我们如何将图片内存存放在 Native 中呢?...对于不同 Android 版本而言,这里的获取过程都有一些差异需要适配。 2)、申请一张普通的 Java Bitmap。...2、然后,通过 hook Debug.MemoryInfo 的 getMemoryStat 方法(os v23 及以上)可以获得 Memory Profiler 中的多项数据,进而获得 细分内存的使用情况

    1.4K31

    Android 11强制用户使用内置摄像头,谷歌让安卓更封闭了吗?

    过去十年以来,Android 的每一次重大更新都在以保护用户的名义关闭或限制某些功能。 在即将到来的 Android 11 版本中,用户将无法选择第三方相机应用,为其他应用拍摄照片或视频。...Android 11 预计将于今年第三季度发布,而在最新的 issue track 中,开发者们发现最新版本再次更改了相机 API 的一些设定,用户将只能使用 Android 内置相机应用,这将对第三方相机如美颜...此次更改的核心,在于 Android 定义的 Intent 系统。举个例子,当你在各大 App 如知乎、极客时间等选择更新头像时,你可以选择拍摄图片上传或者从手机图库上传。...Android 10 上的相机选取器 但是,即将推送的 Android 11 版本对于这一机制做出了大刀阔斧的调整。...Android 的生态和标准。

    99920

    Android适配全面总结(三)----ROM适配

    3、华为手机获取拍照权限后拍照,返回值为空 问题起源: 开发中遇到了需要拍照和从图库中选择图片展示并上传的功能,其他手机测试没问题,华为手机获取拍照权限后拍照,返回值为空。...Android 7.0(API24)以及以上版本不支持file://这种类型的URI,而是使用content://这种类型的URI。...使用Android 8.0(及以上)手机更新安装apk时,在Mainfest.xml 中请求安装权限android.permission.REQUEST_INSTALL_PACKAGES。...在MIUI V6及以上版本,调用MIUI的方法将状态栏图标改为黑色。发现部分小米手机,这样的设置不管用,导致头上一片白,状态栏上的东西基本看不到。...具体代码,可以参看博客 Android判断是否存在外置SD卡(获取手机所有存储设备的路径)

    2.1K10

    【权限问题专项】存储权限合理使用场景VS不合理使用场景说明

    在 Android 4.4(API 级别19)或更高版本中,应用无需请求任何与存储空间相关的权限即可访问外部存储空间中的应用私有目录。卸载应用后,系统会移除这些目录中存储的文件。...获取外部存储的共享文件夹路径有九种type,分别对应不同的目录,如下: 1.DIRECTORY_MUSIC:音乐类型 2.DIRECTORY_PICTURES:图片类型 3.DIRECTORY_MOVIES...二、读、写外部存储权限不合理使用场景 1.应用本身的缓存、日志存储; 2.新闻阅读类:a.缓存文章中的图片资讯,但是并没有保存、下载资讯中图片的行为,无需申请读取存储权限;b.下载的电子书在私有目录中,.../emulated/0/Android/data/packagename(包名),无需申请READ_EXTERNAL_STORAGE权限和WRITE_EXTERNAL_STORAGE权限; 5.安卓10...及以上的应用通过拍照方式上传头像不需申请 READ_EXTERNAL_STORAGE 和WRITE_EXTERNAL_STORAGE权限,除非对已拍照的图片进行二次编辑,需要申请WRITE_EXTERNAL_STORAGE

    1K20

    飞桨手势识别带你玩转神庙逃亡

    01 采集模块 采集模块实现了Android设备上图像采集与设备运行状态的监控功能。通过高频调用关联相机来获取手势图片,将采集到的图片放入缓冲池中以供算法分析模块使用。...拍照方法的实现 Android Camera是安卓系统提供的实现自定义相机功能的官方支持库,采集模块封装了一系列相关调用方法,实现了连续抓拍存储及浮窗实时预览的效果。...增广方式有:0.8~0.9倍的随机裁剪、以图片中心为旋转中心的±10°的随机旋转。 此外,还通过padding的方式将图片调整为方形,以保持原始手势及背景的长宽比。...之后,将采集模块中摄像头捕捉的图片按照训练模型前完全一致的方法进行预处理,并加载保存好的预测模型,通过调用刚才编译的libpaddle-mobile.so库提供的API,就能实现Android端的推理。...注:本文示例代码和视频所使用的是Paddle Lite早期版本,目前最新版本为Lite 2.3.0,项目链接:https://github.com/PaddlePaddle/Paddle-Lite

    1.6K30
    领券