从intent获取所选文件的文件扩展名

时间:2014-02-12 21:37:55

标签: android android-intent android-file

我正在启动一个启动文件选择器的意图,用户可以选择要使用的pdf文件并上传到服务器

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent,1);

当他们选择文件时,它会返回onActivityResult,在那里我查看文件的Uri,看它是否包含.pdf

if(requestCode == 1 && resultCode == RESULT_OK){
    Uri filePath = data.getData();
    File file = new File(filePath.getPath());
    if(filePath.toString().contains(".pdf")){
        if(file.length() <= 1048576){
            de.setPDFUri(filePath.toString());
        }else{
            Toast.makeText(this,"PDF cannot be more than 1 MB, please select another", Toast.LENGTH_SHORT).show();
        }
    }else{
        Toast.makeText(this,"Can only upload PDF files", Toast.LENGTH_SHORT).show();
    }
}

然而,这仅适用于某些文件管理器应用程序(Astro,Explorer),大部分时间我都会收到这样的回复

file:///storage/sdcard0/Download/20131231103232738561744.pdf

以及其他程序(来自制造商的内置应用程序是迄今为止我见过的唯一程序)我得到了这样的回报

content://media/external/file/109

显然没有告诉我有关文件及其类型的任何信息,并返回该文件的ContentProvider信息。

有没有办法让用户通过发送意图中的内容或检查uri并确保它是.pdf文件来选择.pdf文件?

0 个答案:

没有答案