我正在尝试构建一个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文件夹。
答案 0 :(得分:0)
您的第一个问题是您的PDF不属于您的应用。您无法在项目中创建随机位置,并期望构建工具将其打包到您的APK中。
使用应用程序发送PDF的最可能方式是将它们放在位于适当位置的assets/
目录中。在典型的Android Studio项目中,项目根目录为app/src/main/assets/
。
但是,您没有直接的方式让其他应用访问这些资产。您的主要选择是:
将PDF复制到internal storage上文件系统上的文件(例如getFilesDir()
),然后使用FileProvider
将其提供给其他应用
使用可以直接提供资源的my StreamProvider
或者我应该使用移动设备上存储位置的文件路径吗?
用于在APK中发送PDF的资产或其他任何内容都不是设备文件系统上的文件。它们被保存在APK中。您可以使用Android SDK中的类(例如AssetManager
)来获取InputStreams
,如果您愿意,可以使用这些类将内容副本复制为文件系统上的文件。