Я делаю файловый менеджер в студии Android. Как я могу открыть изображение, видео, текст и т. д. с помощью внешнего прилAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Я делаю файловый менеджер в студии Android. Как я могу открыть изображение, видео, текст и т. д. с помощью внешнего прил

Сообщение Anonymous »

Код Java

Код: Выделить всё

public void openFile(File file) {
if (!file.isFile()) {
Toast.makeText(this, "Invalid file", Toast.LENGTH_SHORT).show();
return;
}

try {
String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName());
String mimeType = null;

if (ext != null && !ext.isEmpty()) {
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext.toLowerCase());
}

if (mimeType == null) mimeType = "*/*";

Uri uri;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

try {
uri = FileProvider.getUriForFile(this, getPackageName() + ".filerprovider", file);

} catch (IllegalArgumentException e) {
// fallback for apps not supporting FileProvider URIs
uri = Uri.fromFile(file);
}

intent.setDataAndType(uri, mimeType);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

Log.d("FileOpen", "URI: " + uri + ", MIME: " + mimeType);

if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(Intent.createChooser(intent, "Open with"));
} else {
// fallback: use direct file URI
Intent fallbackIntent = new Intent(Intent.ACTION_VIEW);
fallbackIntent.setDataAndType(Uri.fromFile(file), mimeType);
fallbackIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

if (fallbackIntent.resolveActivity(getPackageManager()) != null) {
startActivity(Intent.createChooser(fallbackIntent, "Open with"));
} else {
Toast.makeText(this, "No app found to open this file", Toast.LENGTH_SHORT).show();
}
}

} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
Log.e("FileOpen", "Error opening file", e);
}
}
path.xml Я делаю файловый менеджер. Я использую последнее разрешение MANAGE_EXTERNAL_STORAGE для доступа ко всем файлам и показываю их с помощью представления переработчика. затем в onclicklistener проверяется, является ли это файлом и открывается ли он затем с помощью функции openFile. Но используя этот код, я не могу открывать файлы, он всегда показывает «Приложение для открытия этого файла не найдено»


Подробнее здесь: https://stackoverflow.com/questions/798 ... video-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»