为什么每次尝试使用以下代码在SDCARD中打开pdf文件时,它实际上并不打开pdf文件本身,而是进入adobe reader的菜单?我的代码有什么问题吗?
Intent intent = new Intent();
File pdfFile = new File("/sdcard/sample.pdf");
Uri path = Uri.fromFile(pdfFile);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(path);
intent.setType("application/pdf");
intent.setPackage("com.adobe.reader");
startActivity(intent);
答案 0 :(得分:11)
不,没有错。您已将类型设置为pdf并将包指定为adobe.reader。这样做是为了在adobe reader中启动pdf。没有使用库(或自己编写代码)来呈现PDF并显示它们,就无法直接在应用程序中显示pdf。
请注意,如果您只设置类型而不是包,系统将找到可用于显示PDF的任何应用程序
修改
您可以尝试类似
的内容 Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File( filename );
intent.setDataAndType( Uri.fromFile( file ), "application/pdf" );
startActivity(intent);
或
Intent intent = new Intent();
intent.setPackage("com.adobe.reader");
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
startActivity(intent);
答案 1 :(得分:1)
这里我给出了我的pdf文件名。你给出了你的文件名。
private static String FILE = Environment.getExternalStorageDirectory().getPath()+"/TestPDF.pdf";
File file = new File(FILE);
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
}