#java #android #uri #environment
#java #Android #uri #Окружающая среда
Вопрос:
Пользователь выбирает каталог с помощью следующего кода:
public void startChoose(View view) {
Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
i.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(Intent.createChooser(i, "Choose directory"), 8010);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 8010:
mypath = data.getData().toString();
break;
}
}
Его каталог хранится mypath
следующим образом (например, с помощью DCIM):
content://com.android.externalstorage.documents/tree/primary:DCIM
Теперь, возможно ли перейти от content://com.android.externalstorage.documents/tree/primary:DCIM
к Environment.DIRECTORY_DCIM
и как?
Если спросить по-другому, я хотел бы получить переменную Environment.DIRECTORY_DCIM
mypath
, когда пользователь выбирает каталог DCIM. Как это можно сделать?
Комментарии:
1. Окружающая среда. DIRECTORY_DCIM==»DCIM»
2. getExternalStoragePublicDirectory(Среда. DIRECTORY_DCIM)==/хранилище/эмулируется/0/DCIM
3. Вы запрашиваете проклятую функцию getRealPathFromUri() .
Ответ №1:
Теперь, возможно ли перейти от содержимого://com.android.externalstorage.documents/tree/primary:DCIM к Environment.DIRECTORY_DCIM и как?
Нет. То Uri
, что вы получаете обратно, не обязательно должно соответствовать файлу (например, оно указывает на документ на Google Диске). Даже если он соответствует файлу, он не обязательно должен находиться в каталоге, к которому привязан Environment
(например, он указывает на файл в пользовательском каталоге).
Пожалуйста, просто используйте Uri
.
Комментарии:
1. Спасибо за ваш быстрый ответ. Приятно знать, что это невозможно. У меня есть часть кода, которая использует
Environment.DIRECTORY_DCIM
File imagedir = getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
т.е. Возможно ли тогда использоватьmypath
ее в качестве Uri, например, так:File imagedir = getExternalStoragePublicDirectory(mypath);
? Я пыталсяFile imagedir = getExternalStoragePublicDirectory(mypath.toString());
, но это не работает.2. @Sam77: Извините, но я не понимаю вашего вопроса.
getExternalStoragePublicDirectory()
включен ли методEnvironment
. Он не принимает произвольные значения в качестве параметров.3. Я понимаю. В этом случае я должен переосмыслить свой код. Спасибо за вашу помощь.