Возможно, вы уже нашли ответ на свой вопрос, но ответ уже был в вашем вопросе. Вы используете Storage Access Framework (SAF). Когда файл открыт, содержимое файла может быть загружено в пользовательский интерфейс. Там должен быть дополнительный кусок кода - продолжение этого, где загружается контент.
/**
* Opens the file at the {@code uri} returned by a Storage Access Framework {@link
Intent}
* created by {@link #createFilePickerIntent()} using the given {@code contentResolver}.
*/
public Task<Pair<String, String>> openFileUsingStorageAccessFramework(
ContentResolver contentResolver, Uri uri) {
return Tasks.call(mExecutor, () -> {
// Retrieve the document's display name from its metadata.
String name;
try (Cursor cursor = contentResolver.query(uri, null, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
Log.d(TAG, "cursor.getColumnCount(): " + cursor.getColumnCount());
for (int i = 0; i < cursor.getColumnCount(); i++) {
Log.d(TAG, i + " - " + cursor.getString(i) + "\n");
}
int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
name = cursor.getString(nameIndex);
} else {
throw new IOException("Empty cursor returned for file.");
}
}
// Read the document's contents as a String.
String content;
try (InputStream is = contentResolver.openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
content = stringBuilder.toString();
}
return Pair.create(name, content);
});
}
Посмотрите под комментарием // Считайте содержимое документа в виде строки.
О SAF:
https://developer.android.com/guide/topics/providers/document-provider
P.S.
SAF не предоставляет доступ к идентификатору файла для загрузки файла. SAF имеет доступ к файлу по URI.