gpt4 book ai didi

java - Android ENOENT 与一些文件

转载 作者:行者123 更新时间:2023-12-01 09:34:25 25 4
gpt4 key购买 nike

我使用 Intent 来获取图片路径并将它们打开到文件中。我可以打开“Camera”文件夹中分配的文件,如“/storage/emulated/0/DCIM/Camera/IMG_20160817_232858.jpg”,但无法打开“/storage/emulated/0/Pictures/1634894_.png”等位置中的文件。使用 file.exists() 它只是说它不存在。需要说的是,我正在使用 API 23 并且我请求 READ_EXTERNAL_STORAGE,所以这不会成为问题......但即使这样我也无法访问这些文件。可能出了什么问题?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
File file = new File(picturePath);
if(file.exists()) {

} else {

}
cursor.close();
}
}

更新:同一文件夹中的所有文件都不会发生这种情况,只是其中一些文件会发生这种情况,但它们确实存在,因为我可以从图库中打开它们。

更新2:我使用这个 Intent 。

Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);

更新3:运行时权限:

if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
SomeWork();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
else {
SomeWork();
}

list 中的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

最佳答案

MediaStore 将为您无法从文件系统访问的图像建立索引。 DATA 列不需要返回可以使用的值。

相反,停止尝试获取文件,并且 use the Uri itself :

  • getContentResolver().openInputStream() 以获取其上的 InputStream
  • DocumentFile.fromSingleUri() 获取 DocumentFile 以便轻松访问元数据(例如 MIME 类型)

关于java - Android ENOENT 与一些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com