首页
学习
活动
专区
工具
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及以上版本中获取采集图片和图库图片的真实路径的方法。请注意,由于不提及具体的云计算品牌商,无法提供腾讯云相关产品和产品介绍链接地址。

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

相关·内容

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券