【问题标题】:Android use bottomsheet to select existing document viewer to Open myfiles documentsAndroid 使用底页选择现有文档查看器以打开 myfiles 文档
【发布时间】:2020-07-31 08:21:47
【问题描述】:
一旦我从我的 Android 应用程序中单击一个文档并打开,找到一种创建底页的方法有点令人困惑。 bottomsheet 应该像这个附加的图像,并且应该有一种方法可以在我的设备中选择现有的文档预览器。
据我所知,iOS 正在快速展望未来。我的问题是我们如何在 android 中实现相同的功能?是否有可以直接在 android 应用程序中使用的内置底部表。我们不能在这里使用 sharesheet 选项吗?.
【问题讨论】:
标签:
android
android-studio
android-layout
kotlin
android-fragments
【解决方案1】:
下面的代码会帮助你。
public void open_file(String filename) {
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + File.separator + filename);
Uri uri = FileProvider.getUriForFile(getActivity(), getContext().getApplicationContext().getPackageName() + ".provider", file);
String mime = getContext().getContentResolver().getType(uri);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(uri, mime);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(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;
}
特别说明 - 使用此代码行处理
Uri uri = FileProvider.getUriForFile(getActivity(), getContext().getApplicationContext().getPackageName() + ".provider", file);
使用这个android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData()