我在互联网上搜索了一段时间,但我找不到解决方案!
在我的项目中,我将PDF文件放在drawable文件夹中(老实说,我不知道还有什么地方可以放置它)。 PDF是一个menù,向用户显示他在该餐厅可以找到的所有食物。 有一个按钮,用户可以打开该PDF文件。通过单击它我收到一条错误消息。或多或少它说应用程序无法提交我的文件:“Impossibile to menuristorante.pdf”。
我创建了一个打开该文件的方法,这是我写的代码:
public void openMenuRistorante(View view)
{
File pdfFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/menuristorante.pdf");
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try{
startActivity(pdfIntent);
}catch(ActivityNotFoundException e){
Toast.makeText(this, "Nessuna Applicazione per leggere i pdf", Toast.LENGTH_SHORT).show();
}
}
可能我错误地将我的文件放在错误的目录中..但是我要把它放在哪里?请记住,我的PDF文件必须已经进入应用程序,因此当用户安装此应用程序时,它必须位于手机内。
由于
答案 0 :(得分:0)
将PDF文件放在资产文件夹中,然后尝试使用以下代码:
Uri file= Uri.parse("file:///android_asset/mypdf.pdf");
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.toString()));
try {
Intent i;
i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(file,mimeType);
startActivity(i);
} catch (ActivityNotFoundException e) {
Toast.makeText(this,
"No Application Available to view this file type",
Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:0)
我在我的应用程序中做了类似的事情,我在我的手机的下载文件夹中有一个名为“Documents”的子文件夹中的文件,我想你可以这样做,它比保留它更好绘制。这是我使用的代码:
try {
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/Documents/" + fileName);
Intent intent = new Intent("com.adobe.reader");
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/pdf");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(Documents.this, "Erreur d'ouverture du fichier", Toast.LENGTH_LONG).show();
}