【问题标题】:Getting a files extension from Filepicker-Intent从 Filepicker-Intent 获取文件扩展名
【发布时间】:2015-08-24 06:30:53
【问题描述】:

这是我的活动课的一部分。通过调用下面的意图,我打开一个文件选择器意图来选择图像或视频。到目前为止,这有效。

public class Activity extends AppCompatActivity {

    EditText et;
    private static final int PICKFILE_RESULT_CODE = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // EditText to show filepath after intent
        et = (EditText)findViewById(R.id.et);

        // Start intent to pick a file
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*|video/*");
        startActivityForResult(intent,PICKFILE_RESULT_CODE);
    }

我在这里检索文件的路径:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode)
        {
            case PICKFILE_RESULT_CODE:
                if(resultCode==RESULT_OK){

                    // Get path of selected file and set it to editText
                    String filePath = data.getData().getPath();
                    et_upload.setText(filePath);
                }
                break;
        }
    }
}

结果看起来像,

"/path/to/file/fileName".

但我想包含文件扩展名:

"/path/to/file/fileName.png"

我错过了什么?

提前感谢您的帮助。 :)

【问题讨论】:

    标签: android android-intent filepicker


    【解决方案1】:

    到目前为止有效。

    setType() 不支持| 运算符。

    我错过了什么?

    首先,路径本身是没有意义的。 ACTION_GET_CONTENT 通常会返回一个content:// Uri,并且路径只对ContentProvider 有意义。例如,这不是文件系统上文件的路径。

    其次,Uri 不必包含文件扩展名。

    如果您想知道 Uri 支持的内容的 MIME 类型,请使用 ContentResolverits getType() method。如果您想将该 MIME 类型转换为文件扩展名,use MimeTypeMap

    【讨论】:

      【解决方案2】:

      这样你就可以实现这个..记住这不是一个完整的解决方案..

      根据它调整您的代码

      public String getImagePath(Uri uri){
         Cursor cursor = getContentResolver().query(uri, null, null, null, null);
         cursor.moveToFirst();
         String document_id = cursor.getString(0);
         document_id = document_id.substring(document_id.lastIndexOf(":")+1);
         cursor.close();
      
           cursor = getContentResolver().query(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
         cursor.moveToFirst();
         String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
         cursor.close();
      
         return path;
      }
      

      【讨论】:

        猜你喜欢
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 2016-09-01
        • 1970-01-01
        相关资源
        最近更新 更多