Android应用程序中assets文件夹中的pdf文件

时间:2011-02-25 05:30:50

标签: android pdf android-intent assets

我将PDF文件放在我的Android应用程序的assets文件夹中。我能够使用AssetManager阅读文件名。我需要在屏幕上显示它们,我能够做到这一点。但我需要使用pdfviewer打开它们。

要在onclick()上为每个项目写一个意图,我需要传递PDF文件的URI。使用AssetManager我无法获取文件的URI。有没有更好的方法来处理这整件事?

即使我们能够检索URI,PDF查看器是否能够读取资源文件夹中的PDF文件?

更新
根据以下建议,我编写了以下代码

  try {

                Uri path = Uri.parse("android.resource://com.csg.android.myproject/raw/csgsample")  ;
                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(FirstTab.this, "NO Viewer", Toast.LENGTH_SHORT).show();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

它会抛出ActivityNotFoundException,并显示以下异常消息:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=android.resource://com.csg.android.myproject/assets/pdf/csgsample typ=application/pdf flg=0x4000000 }

我使用PackageManager查询设备,我发现安装了Adobe Reader。但我不确定为什么会抛出这个错误。我也尝试将其放在assets文件夹中,然后相应地更改了URI并运行程序,但我最终仍然遇到了同样的错误。

1 个答案:

答案 0 :(得分:0)

您可以将它们放在res / raw文件夹中,然后创建resource URIs以指向它们。它们的格式为android.resource://com.example.myapp/raw/my_resource。我不确定的是,如果其他应用程序(如PDF阅读器)能够打开它们。试试吧!

相关问题