2012-11-01 44 views
3

我有一個活動,允許用戶使用默認PDF /電子書閱讀器打開加密的pdf文件。加密的pdf文件的解密結果是一個字節數組。我想將該字節數組傳遞給以PDF格式打開該字節數組的意圖。意圖實例是這樣的:Android如何將PDF文件作爲字節數組傳遞給intent

PackageManager pm = PackageManager; 
Intent intentPdf = pm.GetLaunchIntentForPackage("com.adobe.android"); 

這可能嗎? pdf閱讀器(Adobe /任何其他)可以從字節數組瞭解它是PDF文件嗎? 我嘗試過使用Bundle.PutByteArray和Intent.putExtra,但它不起作用。

var bundle = new Bundle(); 
bundle.PutByteArray("key", inputFileData); 
intentPdf.PutExtra("name", bundle); 
StartActivity(intentPdf); 

inputFileData是我的字節數組。

+2

Oh no no no no。您不想通過Intent傳遞整個PDF內容。相信我,我是一名開發人員。 – OcuS

+0

好吧,但是甚至可以傳遞整個PDF?只是要知道,因爲如果是這樣,我可以對PDF大小進行排序,而對於大型的使用URI方法。 – razvanSax

+0

你不想*傳遞整個PDF。意圖不是爲此而作出的。看到我對勞倫斯 - 道森的評論答案。 – OcuS

回答

2

PDF閱讀器(Adobe /任何其他)可以從字節數組瞭解它是PDF文件嗎?

可能不是。歡迎您聯繫這些應用程序的開發人員並提問。正如其他人所指出的,由於尺寸問題,這是一個壞主意。此外,如果您啓動的PDF閱讀器恰好啓動其自己的任務,your byte array will be readable by any app on the device

或者,歡迎您使用ContentProvider,像this one,你在哪裏工作了一些一次性使用Uri結構,所以一旦PDF閱讀器使用Uri,其他什麼都可以。

或者,歡迎您編寫自己的PDF查看器,該查看器可以處理字節數組。

3

我認爲一個bundle的最大大小是非常小的,你最好將URI傳遞給解密pdf的pdf閱讀器。

+0

我同意你的建議,但是我希望採用字節數組的這種方法,這樣pdf閱讀器將無法訪問任何pdf文件路徑,只是一個字節數組。 – razvanSax

+2

我建議你考慮添加一個ContentProvider,因爲你的字節數組可能對於這個包太大了:http://developer.android.com/guide/topics/providers/content-providers.html – Ljdawson

+1

尺寸對於一些很好的與「意圖」的目的有關的原因:「意圖是要執行的操作的抽象描述。」 *操作描述*。您要使用的數據應該用Uri表示。 (說文檔。) – OcuS

相關問題