Это для того, когда вы хотите поделиться файлом с другим приложением

у выбрать файл, который существует в SDCardне во внутренней памяти и загрузить его на сервер, но я не могу получить его путь для получения его размера. У меня есть намерение выбрать файл, используя следующий код:

 intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
 intent.addCategory(Intent.CATEGORY_OPENABLE);
 intent.setType("*/*");
 String[] mimetypes = {"application/*"};
 intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
 startActivityForResult(
      Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE);

Для получения пути к файлу я используюэтот ответ и это работает, если пользователь не выберет какой-либо файл из SDCard (съемный). Когда я отладил код и обнаружил, чтотип не являетсяпервичный так что это не пойдет внутрь этого условия:

if("primary".equalsIgnoreCase(type)){
     return Environment.getExternalStorageDirectory() + "/" + split[1];
} 

Итак, мой вопрос, что будет, это еще? т.е. что если тип не является первичным? как мы можем получить путь к файлу в этом случае? У меня есть поиск по многим вопросам, и учебника больше нет ни в одном из них. Я также пробовал еще частьэтот ответ но это не работает, потому чтоSystem.getenv() вернутьноль за "ВТОРИЧНОЕ ХРАНИЛИЩЕ" а такжеSD Card за "ВНЕШНЕЕ ХРАНИЛИЩЕMsgstr "Я получаю исключение файла не найдено при попытке:

if ("primary".equalsIgnoreCase(type)) {
    return Environment.getExternalStorageDirectory() + "/" + split[1];
}else{
    return System.getenv("EXTERNAL_STORAGE") + "/" + split[1];
}

Uri и идентификатор документа для файла выглядят так:

Uri: content: //com.android.externalstorage.documents/document/0EF9-3110%3Adevice-2016-12-02-130553.png

DocId: 0EF9-3110: device-2016-12-02-130553.png

Любая помощь ??

Ответы на вопрос(3)

Ваш ответ на вопрос