Код: Выделить всё
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);
}
}
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/798 ... video-text