2012-08-10 58 views
2

我想用PDF閱讀器打開我的PDF文件,我正在搜索更多關於如何做到這一點,發現了很多答案,但每個答案都告訴將該文件保存到「SD卡」 。保存私人信息到公共場所

將文件保存到SD卡是個好主意,但問題是如果用戶沒有在手機中安裝SD卡。目前很多手機都有大內置內存,例如:三星Galaxy S3,HTC One V,三星Galaxy Note,索尼Xperia S等衆多手機。

所以我的問題是:這些手機已經有一個大的內置內存,所以用戶不需要添加SD卡(它取決於用戶)。在這種情況下,哪些位置可供其他應用程序訪問,如公共位置(SD卡)。

當我搜索我的問題時,我發現這個指示保存Android平臺提供的應用程序數據的位置的這個link

的Android平臺提供這些選項來保存應用數據:

  1. 共享偏好
  2. 內部存儲
  3. 外部存儲
  4. SQLite數據庫
  5. 網絡連接

Android提供一種公開的方式將數據混淆到其他應用程序 - 與內容提供商聯繫

我閱讀了關於內容提供商的信息,但我不明白它是如何工作的。

如果有任何教程顯示它是如何工作的,請提供該教程鏈接或者這是否可以在其他的方式進行,請告訴我怎麼樣。

任何幫助將不勝感激。謝謝!

+0

我不確定你在問什麼 - 你的意思是你的應用程序是一個PDF閱讀器,你想知道如何訪問PDF? – brianestey 2012-08-10 09:52:22

+0

@brianestey沒有我的應用程序是一個簡單的應用程序。它包含在資產文件夾中的PDF文件,我想用我的android手機上已經安裝的PDF閱讀器打開該文件。 – Pari 2012-08-10 10:11:36

+0

@brianestey如果我將PDF文件保存到SD卡,然後打開它,它很容易打開,但如果我卸載我的SD卡,然後打開它顯示錯誤「文件路徑無效」。現在我想將我的文件保存在其他應用程序可訪問的位置,即使在我卸載SD卡時也是如此。 – Pari 2012-08-10 10:15:08

回答

0

您可以使用下面的技術保存,而不是SD卡..

  1. 共享偏好 例如: - SharedPreferences demo_sp = getApplicationContext() .getSharedPreferences( 「演示」,MODE_PRIVATE); String dem = demo_sp.getString(「DEMO」,「demo」);
  2. 內部存儲
  3. SQLite數據庫,一旦你存儲任何SQLite中,它會創建在您的手機.db文件,U盤可以訪問
1

按照documentation看來,唯一真正的選擇您必須將您的PDF保存在公共存儲器中才能將其存儲在外部存儲器中。您可以隨時讓您的應用程序檢查外部存儲是否可用,然後再使用它來共享您的PDF。

,你可以試試(我沒有試過,只是想的現在)的另一種方法是將PDF寫入到一個臨時文件,然後共享臨時文件的位置。

File.createTempFile()會創建一個臨時文件。您可以嘗試查看該臨時文件的保存位置,然後如果該位置可由其他應用訪問。

+0

我不知道,如果它有效,但我真的很喜歡最後一個概念!+1 – 2012-08-10 14:13:54

0

在我的應用程序中,我只在可用時使用sdCard,否則使用手機存儲器。

對於手機內存中就可以得到像這樣一個文件對象:

File file=new File(context.getFilesDir(), FILENAME); 

其中當然上下文是一個上下文對象。然後,您可以像使用讀/寫操作的常規Java文件一樣使用此文件。

對於SD卡存儲,你必須先聲明這體現:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

您應該檢查是否外部存儲可用:

public static boolean hasSdCard(){ 
    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 
} 

然後你就可以得到一個文件對象

File file = new File(Environment.getExternalStorageDirectory() + DIRECTORY + FILENAME);