【发布时间】:2015-07-16 11:49:52
【问题描述】:
我想在我的 android 应用程序中打开一个 .pdf 文件。现在我可以浏览该 pdf 文件,并且在浏览该文件后我得到 File Not Found 错误时我检查文件是否存在。现在选择文件后,我选择的文件 Uri data.getData() 就像
content://com.android.externalstorage.documents/document/6333-6131:SHIDHIN.pdf
当我使用data.getData().getPath().toString() 解析时的路径就像
/document/6333-6131:SHIDHIN.pdf 这是我的代码。请帮帮我。
// To Browse the file
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/pdf");
startActivityForResult(intent, PICK_FILE_REQUEST);
选择文件后
//onActivityResult
public void onActivityResult(final int requestCode, int resultCode, Intent data) {
try {
switch (requestCode) {
case PICK_FILE_REQUEST:
if (resultCode == RESULT_OK) {
try {
Uri fileUri = data.getData();
String path = fileUri.getPath().toString();
File f = new File(path);
if (f.exists()) {
System.out.println("\n**** Uri :> "+fileUri.toString());
System.out.println("\n**** Path :> "+path.toString());
final Intent intent = new Intent(MainActivity.this, ViewPdf.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
startActivity(intent);
} else {
System.out.println("\n**** File Not Exist :> "+path);
}
} catch (Exception e) {
ShowDialog_Ok("Error", "Cannot Open File");
}
}
break;
}
} catch (Exception e) {
}
}
【问题讨论】:
-
如果文件存储在应用程序的内部缓存中,android 不允许其他应用程序访问它。所以也许这可能是问题所在。
-
文件存放在外部目录中。
-
您不能只将 uri 转换为绝对路径。你需要使用
ContentResolver。 -
@Froyo 这也不适合我。我收到一个空指针异常“ava.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on an null object reference”
标签: java android pdf android-intent filenotfoundexception