相对文件名在android上开始的位置

时间:2016-12-09 22:57:10

标签: android

我正在尝试构建一个Android应用程序,它允许我查看存储在应用程序中的PDF文档集合。其他堆栈帖子引导我到下面的解决方案。但是,我对应该使用哪些文件路径感到困惑。我应该将文件路径建立在" app"文件夹或"项目"夹?或者我应该使用移动设备上存储位置的文件路径吗?

    File codeOfPoints = new File("/pdf/CoP_Full.pdf");
    String path = getFilesDir() + codeOfPoints.getAbsolutePath();
    Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse(path));

    intent.setType("application/pdf");
    PackageManager pm = getPackageManager();
    List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
    if (activities.size() > 0) {
        startActivity(intent);
    }

上述文件结构将基于app文件夹。

1 个答案:

答案 0 :(得分:0)

您的第一个问题是您的PDF不属于您的应用。您无法在项目中创建随机位置,并期望构建工具将其打包到您的APK中。

使用应用程序发送PDF的最可能方式是将它们放在位于适当位置的assets/目录中。在典型的Android Studio项目中,项目根目录为app/src/main/assets/

但是,您没有直接的方式让其他应用访问这些资产。您的主要选择是:

  1. 将PDF复制到internal storage上文件系统上的文件(例如getFilesDir()),然后使用FileProvider将其提供给其他应用

  2. 使用可以直接提供资源的my StreamProvider

  3.   

    或者我应该使用移动设备上存储位置的文件路径吗?

    用于在APK中发送PDF的资产或其他任何内容都不是设备文件系统上的文件。它们被保存在APK中。您可以使用Android SDK中的类(例如AssetManager)来获取InputStreams,如果您愿意,可以使用这些类将内容副本复制为文件系统上的文件。