如何从Android应用程序打开本地PDF文件

时间:2014-05-22 12:50:09

标签: android pdf android-intent

我尝试使用Adobe Reader从我的Android应用程序中打开PDF文件。当我的代码被删除时,Adobe Reader会打开,但会引发以下错误:'错误:文档路径无效' 文件blabla.pdf位于我的应用程序中 rootfolder

String filename = "blabla.pdf";
File file = new File(filename);
Uri internal = Uri.fromFile(file);
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(internal, "application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

intent = Intent.createChooser(target, "Open File");
try {
    startActivity(intent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "U hebt geen PDF viewer geïnstalleerd op dit toestel. " +
        "Ga naar de app store en download een PDF viewer om dit bestand te openen.", Toast.LENGTH_LONG).show();
}
startActivity(intent);

我想使用内部存储,而不是外部存储。 我已经使用了这个示例:Link并且没有真正理解这两个示例:Link1Link2

3 个答案:

答案 0 :(得分:2)

1)首先将文件复制到内部存储器。   - >将您的pdf文件保存在assets文件夹中。使用以下函数将文件复制到内部存储

private void copy( InputStream in, File dst ) throws IOException {
    FileOutputStream out = new FileOutputStream( dst );
    byte[] buf = new byte[1024];
    int len;

    while ( ( len = in.read( buf ) ) > 0 ) {
        out.write( buf, 0, len );
    }

    in.close( );
    out.close( );
}

函数调用相同:

File f = new File( getContext( ).getFilesDir( ), "abc.pdf" );
AssetManager assets = getContext( ).getResources( ).getAssets( );
copy( assets.open( "abc.pdf" ), f );

2)现在您已将文件保存在内部存储中,因此请使用以下代码来获取文件对象

File f = new File( getContext( ).getFilesDir( )+"/"+abc.pdf);

答案 1 :(得分:0)

使用以下代码检查文件路径是否正确

if(file.exists()){
  //file path is correct 
}else{
  //file path is not correct 
}

答案 2 :(得分:0)

您必须设置文件的完整路径。就像你在示例中所示

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename);