【问题标题】:reading file in assets or raw folder in Android在Android中读取资产或原始文件夹中的文件
【发布时间】:2011-02-25 17:54:52
【问题描述】:

我必须将 pdf 文件与我的应用程序一起发送,并将它们显示为列表,单击后每个文件都应在 Adob​​e 阅读器中打开。我尝试将 pdf 文件放在 /assets 文件夹中,也放在 /res/raw 文件夹中。但无论哪种情况,我都会遇到 ActivityNotFound 异常。代码和异常消息如下。

将文件放在 /assets/pdf 文件夹中

try {
            files = amanager.list("pdf");
            //AssetFileDescriptor fd = amanager.openFd(files[0]);
            Uri path = Uri.parse("android.resource://com.csg.android.myproject/assets/pdf/csgsample")  ;
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setPackage("com.adobe.reader");
            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();
        }

将文件放在 /res/raw 文件夹中

Uri.parse("android.resource://com.csg.android.myproject/raw/csgsample")  ;

例外:

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 pkg=com.adobe.reader }

任何帮助将不胜感激。

提前致谢, 纳文

【问题讨论】:

    标签: android pdf uri assets


    【解决方案1】:

    如果您收到ActivityNotFoundException 是因为没有应用程序可以处理此类内容。所以,在这种情况下,我确定安装了 Adob​​e Reader。

    另外,我认为您必须将文件复制到 SDCard 才能让其他应用程序访问它。出于安全原因,他们无法直接访问您的私人数据。

    【讨论】:

    • 感谢您的回复克里斯蒂安。当我使用包管理器查询设备以获取所有安装的包时,我可以在列表中看到 Adob​​e Reader。因此,我希望设备在看到此意图时会触发 Adob​​e Reader。我假设这个错了吗?我们是否应该明确告诉设备要使用什么包来实现什么目的?我也会考虑你提到的第二个选项。再次感谢。
    【解决方案2】:

    我认为资产和原始文件只能由您的应用程序查看。 3rd 方应用程序(捆绑或不捆绑)无法访问这些文件。您应该先将文件放入设备的 sdcard 中,然后再打开它们。

    【讨论】:

      【解决方案3】:

      我有同样的问题,但我应该注意这是我通过资源 id 打开的方式

      Uri.parse("android.resource://com.csg.android.myproject/" + R.raw.csgsample);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 2011-01-22
        • 2011-03-03
        • 2018-01-19
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        相关资源
        最近更新 更多