所以我在我的应用程序中有这些按钮,我想在应用程序中打开.PDF文件。
我已将文件存储在/ res / raw目录中。我们称它们为file1.PDF,file2.PDF等。
public void onClick(View v) {
switch (v.getId()) {
case R.id.file1:
Log.i(TAG, "Button one pressed");
openPDF(Uri.parse("android:resource://test.pdf.files/raw/res/file1.PDF"));
break;
}}
以上是我的onClick代码。下面是openPDF函数的代码。
public void openPDF(Uri url)
{
File file = new File(url.toString());
Log.i(TAG, url.toString());
if (file.exists())
{
Log.i(TAG, "File exists");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
try
{
getApplicationContext().startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Log.e(TAG,"Activity not found exception");
}
}else{
Log.i(TAG,"404: File not found!");
}
}
我的问题如下,我永远无法通过if(file.exists())检查。我已经尝试使文件文件同时采用Uri,URI和String,我也尝试过或多或少的文件路径变体,例如“res / raw / file1.PDF”,“raw / file.PDF”,“test .pdf.files /生/ RES / file1.PDF”。但在任何这些情况下我都找不到我要打开的文件,有人能看出为什么这不起作用?
我一直试图解决这个问题几个小时而且我似乎无法绕过它。
答案 0 :(得分:0)
我永远无法通过if(file.exists())检查
当然。您的Uri
未指向文件。您的Uri
指向资源。资源不是文件。文件不是资源。
您可以使用startActivity()
使用您的资源Intent
来尝试Uri
。如果您发现PDF查看器拒绝使用Uri
,则需要将资源复制到本地世界可读文件(例如,在外部存储上)并使用该副本Uri.fromFile()
启动您的PDF查看器。