我正在启动一个启动文件选择器的意图,用户可以选择要使用的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
文件?