gpt4 book ai didi

java - 在 Android : Invalid file path 中打开 pdf 时出现问题

转载 作者:行者123 更新时间:2023-11-29 08:11:33 25 4
gpt4 key购买 nike

我需要从我的 Android 应用程序打开一个 pdf 文件。我将 pdf 保存在应用程序包文件夹 (/data/data/com.app.example/files) 中。我已经在 android 模拟器中安装了 adobe reader 应用程序。问题是,当我尝试使用 adobe reader 打开 pdf 文件时,模拟器会显示下一条消息:文件路径无效。

我不知道为什么会这样,但我坚持这一点。文件保存正确,因为我可以在我的电脑上打开它。

代码如下:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try {
HttpResponse response = client.execute(request);
request(response, file_name);

File file = new File("data/data/com.app.example/files/"+file_name);

PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("application/pdf");
List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY);
if(file.exists())
{
if (list.size() > 0 && file.isFile()) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);
}else
{
System.out.println("NO APPs TO OPEN PDFs.");
}
}
else
{
System.out.println("FILE DOES NOT EXIST.");
}
}catch(Exception ex){
System.out.println("Failed!");
ex.printStackTrace();
}


public String request(HttpResponse response, String file){
String result = "";
try{
InputStream in = response.getEntity().getContent();
FileOutputStream f = openFileOutput(file, MODE_WORLD_WRITEABLE);
byte[] buffer = new byte[in.toString().length()];
int len1 = 0;
int counter = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
counter++;
}
f.close();
}
catch(Exception ex){
result = "Error";
}
return result;
}

提前致谢。

问候,Javi。

最佳答案

这是因为 PDF 文件位于您自己的包中,而 Adob​​e 阅读器试图从您的包中访问 PDF 文件,这对于 Android 应用程序开发是不允许的。

您可以尝试将文件保存在SD卡上,然后再打开

关于java - 在 Android : Invalid file path 中打开 pdf 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com