获取Android 11图片的绝对路径

在Android 11中,由于增强了对隐私的保护措施,直接获取图片的绝对路径变得更加困难。在过去,我们可以通过MediaStore来获取图片的绝对路径,但现在需要使用不同的方法来实现这一功能。

使用新的API

在Android 11中,我们可以使用新的API来获取图片的绝对路径。其中,通过ContentResolver访问MediaStore的方式被修改,我们需要通过Uri来获取图片的真实路径。

下面是通过Uri获取图片绝对路径的示例代码:

// 获取图片的真实路径
public String getRealPathFromUri(Uri contentUri) {
    String filePath = "";
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(contentUri, projection, null, null, null);
    
    if (cursor != null) {
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        filePath = cursor.getString(columnIndex);
        cursor.close();
    }
    
    return filePath;
}

通过Intent获取图片的Uri

另一种获取图片绝对路径的方法是通过Intent来获取图片的Uri,并使用上述方法来获取真实路径。

// 通过Intent获取图片的Uri
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null) {
        Uri imageUri = data.getData();
        String imagePath = getRealPathFromUri(imageUri);
        
        // 处理获取到的图片路径
    }
}

总结

通过新的API和方法,我们可以在Android 11中获取到图片的绝对路径。虽然相较于以往的版本更加复杂,但这也是为了更好地保护用户的隐私信息。我们需要适应这些变化,并灵活调整我们的代码来适应新的规则。

pie
    title 图片路径获取方式分布
    "通过Uri获取" : 50
    "通过Intent获取" : 30
    "其他方式" : 20

希望通过本文的介绍,您能够了解在Android 11中获取图片绝对路径的方法,以便更好地开发应用程序并满足用户的隐私需求。