尝试访问assets文件夹中的子文件夹

时间:2014-03-26 05:10:10

标签: android pdf android-intent

我的资源文件夹有一个子文件夹树..我正在尝试访问该目录中的pdf ..网址如下

url = QP/28/28/mth.pdf

完整目录如下

ful directory = file:///data/data/com.example.testqstn/files/QP/28/28/mth.pdf

我使用以下代码访问了路径

intent.setDataAndType(Uri.parse("file://" + getApplicationContext().getFilesDir()
       + "/"+url), "application/pdf");
startActivity(intent);
     finish();

我没有收到任何错误信息,但是pdf没有打开..当没有使用子文件夹时,pdf只是出现在资产文件夹中..然后pdf打开正确.. 究竟究竟是什么问题???

并且日志cat没有显示任何错误..

3 个答案:

答案 0 :(得分:4)

你不需要传递文件路径,因为资产在apk中构建,所以你只需在这个例子中使用这个函数我从资产中读取文本文件..

      String[] files = assetManager.list("fonts/temp/temp1/HippaPrivarcyDocument");
      // Above line gives the list files in asset particular sub folder........
      InputStream input;
                try {
                    input = getAssets().open("fonts/temp/temp1/HippaPrivarcyDocument");
                    int size = input.available();
                    byte[] buffer = new byte[size];
                    input.read(buffer);
                    input.close();
                    // byte buffer into a string
                    text = new String(buffer);
                } catch (Exception e) {

                }

一切顺利

答案 1 :(得分:1)

解决

真的很简单.. 要访问assets文件夹中的子文件夹,您需要以下内容..

首先按文件名访问文件..

    File file = new File(getFilesDir(), fname);

第二次尝试打开文件时,请同时使用文件名和文件的URL

    in = assetManager.open(url+fname);

意图中的第3个只使用文件名..(我使用的是整个路径)

    intent.setDataAndType(
        Uri.parse("file://" + getFilesDir() + "/"+fname),
        "application/pdf");

答案 2 :(得分:0)

您必须使用三个///。试试这个:

intent.setDataAndType(Uri.parse("file:///android_asset/" + "relative_path");