【问题标题】:How to find the type of a selected file after Picking the file via an Intent in Android?如何在Android中通过Intent选择文件后找到所选文件的类型?
【发布时间】:2021-06-15 13:38:18
【问题描述】:

我可以通过以下代码选择 PDF 或图像文件:

            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("*/*");
            String[] mimetypes = {"image/*", "application/pdf"
            };
            intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
            startActivityForResult(Intent.createChooser(intent, "Select a file"),REQUEST_GET_SINGLE_FILE);

我通过以下方法收到结果:

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
       try {
           if (resultCode == Activity.RESULT_OK) {
              if (requestCode == REQUEST_GET_SINGLE_FILE ) {
                 Uri selectedImageUri = data.getData();
                 ....
                 ....

我需要查找选中的文件是PDF还是图片?如何查找文件类型?

【问题讨论】:

  • 使用内容解析器查询所选 uri 的 mime 类型。
  • 能否请您帮我提供更多 vie 代码或...?
  • Cursor cursor = getContentResolver().query(uri, null, ......

标签: android file android-intent types


【解决方案1】:

我建议您阅读ContentResolver documentation,然后阅读此Retriefe-info documentation,然后您将能够获得文件的扩展名。

MIME 类型

Uri selectedImageUri = data.getData();
String mimeType = getContentResolver().getType(selectedImageUri);

它将返回如下内容:

“图像/JPEG”

“图片/png”

如果你想使用Cursor,你可以这样做:

Cursor cursor = getContentResolver().query(selectedImageUri, null, null, null, null);
   if (cursor.moveToFirst()) {
        int columnIndex = cursor.getColumnIndex(0);
        String filePath = cursor.getString(columnIndex);
        String extension = filePath.substring(filePath.lastIndexOf(".") + 1); //will return pdf
   }
cursor.close();

【讨论】:

  • 第一个选项很棒。第二个选项 (filePath.substring()) 在大量 Uri 值上中断。
  • 确实如此。由于查询了 .DATA 列,我认为(为什么是 0?)而不是 MIME_TYPE 列,这是应该使用的列。
猜你喜欢
  • 2012-02-15
  • 2015-12-27
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多