Android新手,對使用PDF非常困難感到驚訝。我想我已經整合了將PDF傳遞給Adobe等應用程序的代碼,並且如果沒有安裝此類應用程序,則會返回錯誤。訪問PDF文件以傳遞給Adobe(Android)
但是,targetName
給出的文件路徑似乎無效,無論我是否將target
置於資產或res/raw中。我不關心文件在哪裏,只要應用程序可以讀取並傳遞它。
任何人都可以啓發我什麼伏都教儀式,我必須執行在Android中打開PDF?我想念iOS的PDFView。
public void openPdf(Context context, String targetName) {
File target = new File(targetName);
if (target.exists()) {
Uri targetUri = Uri.fromFile(target);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(targetUri, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try{
context.startActivity(pdfIntent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(this, "You must have a PDF reader installed to view this document.", Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(this, "Die App ist kaput.", Toast.LENGTH_SHORT).show();
}
}
對不起,沒有要抱怨或冒犯的意思。如果不是存儲應用程序運行時要使用的東西,那麼'assets'或'res'的目的是什麼? –
@ClaytonGeipel:資源和資產是應用程序在自己的過程中使用的東西。這可以直接通過自己的代碼(加上Android框架)或通過庫。但是,一旦涉及第三方應用*,通常您將不得不做更多的事情。這是因爲儘管資源和資產被其他應用程序(笨拙地)讀取,但很少有開發人員懶得編寫應用程序來實際讀取它們,而將其工作重點放在更常規的數據源上:文件,URL和「ContentProviders」。 – CommonsWare
@ClaytonGeipel:資產甚至更糟,因爲沒有'Uri'語法可將第三方應用程序指向您的某個資產。你可能會發現一些PDF閱讀器可以直接讀取你的原始資源嗎?也許。但我懷疑任何流行的 - Adobe Reader,特別是,我確信沒有。因此,如果您要依賴第三方應用程序,您有責任以這些應用程序可能使用的方式提供數據。 – CommonsWare