爲了引導我的問題,請注意幾件事。在這種情況下,我不想將所述文件存儲在SD卡上。該文件也不能直接存儲在應用程序本地文件目錄中。它需要位於子目錄中,因此它不能使用openFileOutput()和MODE_WORLD_READABLE寫入文件。如何通過意向在另一個應用程序中打開本地應用程序文件?
該應用程序可能會下載文件的小文件,如PDF格式,並將它們本地存儲在一個子目錄中。我希望能夠讓用戶打開這些文件,如果他們有一個可以打開它們的應用程序。
例如這裏是發送PDF的意圖:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(path), "application/pdf");
startActivity(intent);
路徑是這樣的:/data/data/packagename/files/subdir/example.pdf
這一意圖將開啓pdf查看器,但查看器無法打開文件。我認爲這是一個權限問題。我在這裏嘗試Mark Murphy的建議:使用Runtime.getRuntime().exec("chmod 755 " + fileName);
的http://groups.google.com/group/android-developers/browse_thread/thread/4e55d869213483a9/b7270078ac1a2744?lnk=raot,但沒有任何區別。他還建議了一個內容提供者,但是如果可以的話,我想避免它,因爲將這個文件轉換爲另一個應用程序看起來很像。
如果內容提供者是唯一的選擇,我是否必須將文件保存到內容提供者,或者我可以只使用內容提供者作爲傳遞來在需要時將其傳遞給其他應用程序?
謝謝,讓我知道如果我不清楚。
其他活動無權訪問您的文件。如果你需要他們,你必須將他們保存到SD卡或使用內容提供商。 – Falmarri 2010-11-08 03:41:13