Я пытаюсь открыть файл с помощью другого приложения, т. е. открываю .jpg с помощью Gallery, .pdf с помощью Acrobat и т. д.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь открыть файл в приложении, он открывает только выбранное приложение, а не открывает файл в приложении. Я попытался выполнить Android открыть файл PDF через Intent, но я должен что-то упустить.
public String get_mime_type(String url) {
String ext = MimeTypeMap.getFileExtensionFromUrl(url);
String mime = null;
if (ext != null) {
mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);
}
return mime;
}
public void open_file(String filename) {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS), filename);
// Get URI and MIME type of file
Uri uri = Uri.fromFile(file).normalizeScheme();
String mime = get_mime_type(uri.toString());
// Open file with user selected app
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setType(mime);
context.startActivity(Intent.createChooser(intent, "Open file with"));
}
Насколько я могу судить, он возвращает правильный URI и тип MIME:
URI: file:///storage/emulated/0/Download/Katamari-ringtone-985279.mp3
MIME: audio/mpeg
setType()
после того, какsetData()
очистит данные, поэтому в идеале используйтеsetDataAndType()
- person KaosXIV   schedule 03.06.2020