从Filepicker-Intent获取文件扩展名

时间:2015-06-09 12:27:29

标签: android android-intent filepicker

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

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"

我错过了什么?

提前感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:1)

  

到目前为止这是有效的。

setType()不支持|运营商。

  

我错过了什么?

首先,单独的道路是没有意义的。 ACTION_GET_CONTENT通常会返回content:// Uri,该路径仅对ContentProvider有意义。例如,这不是文件系统上文件的路径。

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

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

答案 1 :(得分:0)

这种方式你能实现这个......记住这不是一个完整的解决方案..

根据它调整您的代码

var dict = { 
  zipCode : 78457,
  property2 : "hi there"
};
$.param(dict) // returns "zipCode=78457&property2=hi+there"