我有一个OnClick实现以下功能的方法:
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Выберите файл для загрузки "), 1);
之后,文件列表打开,选择后我们转到方法OnActivityResult,在那里我们得到Intent在OnClick.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
如何通过变量获取文件扩展名data?我获得了可以获取文件的完整路径,但名称不正确。例如,在我的手机中媒体文件被调用video0515.mp4,在数据中我得到文件的路径:
Intent { dat=content://com.android.providers.media.documents/document/video:10515 flg=0x1 }
并且无法以任何方式获得扩展名。
要从文件的 URI 中获取文件的 MIME 类型,您需要编写一个小方法:
吸气剂本身:
字符串
type将包含文件的 MIME 类型。例如,对于 JPG 图片,我们得到 - image/jpg
方法中的两个分支与内容文件(如图像、视频、音频等)的 URI 具有与其他文件不同的格式这一事实有关。
您还可以从其名称中获得“干净”的文件扩展名。由于Android有一个非常混乱的文件系统,分为内容(内容也是按类型)和文件本身,还依赖于API,因此获取扩展的通用代码比较繁琐。如有必要,您可以选择一个专门适合您的任务的单独模块(例如,仅 API 19 及更高版本上的图像文件),而不是复制整个代码:
然后获得扩展将像这样发生:
其中变量
type是文件扩展名。例如,对于文件 1234.jpg 它将等于jpg
要在 API 19 及更高版本上工作,需要清单中的许可
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>