我想創建一個文件,其中存儲一些數據,只能通過我的應用程序訪問。外部用戶應該無法訪問此文件或對其進行任何更改。我將存儲一個密鑰在需要時可由應用程序訪問的文件中。一個應用程序的私人文件
回答
要創建應用程序專用文件(其他應用程序不可讀取),應使用Context.openFileOutput()並標記爲MODE_PRIVATE。
如果您擔心可以將返回的InputStream包裝到CiperOutputStream中並加密內容。
如果要以標準加密格式(X.509或PKCS#12)存儲密鑰,則可以使用ICS中引入的新KeyChain API。
使用Environment.getDataDirectory(), http://developer.android.com/reference/android/os/Environment.html#getDataDirectory()
這給出了一個文件對象,它是通向一個私人的,應用程序特定的數據目錄。其中創建的文件由您應用的用戶ID所有,從而阻止任何其他應用訪問它們。
File myPrivateFile = new File(Environment.getDataDirectory(), context.getPackageName() + File.separator + "secret.txt");
請注意,如果設備已經生根,所有投注都將關閉。根進程可以讀取設備上的任何文件。您所能做的最好的只是設備用戶的存儲信息。這樣,如果它被破壞,只有一個用戶帳戶被盜用。換句話說,不要存儲證書,密鑰,訪問令牌等,這將允許惡意代理訪問可以爲其他用戶竊取數據的服務器。
有關Android安全性的更多信息,請參閱此處:http://developer.android.com/guide/topics/security/security.html – Sparky 2012-03-19 07:23:44
不正確,Environment.getDatDirectory返回Android的數據目錄(通常是/ data/data )。這不是特定於應用程序的。 – 2012-03-19 08:34:04
@NicStrong,這可以在我的應用程序之外訪問,也許通過使用像文件瀏覽器這樣的應用程序? – 2012-03-19 11:33:36
爲什麼不把它存儲在SharedPreference?
讓您SharedPreference
私人你的活動通過調用..
getSharedPreferences(yourfile, MODE_PRIVATE);
這將確保只有你Activity
可以訪問該SharedPreference
。
,因爲他詢問是否存儲文件,而不是鍵值對。 – 2012-03-19 07:30:01
此外,SharedPreference也可以通過root訪問進行訪問。 – josephus 2012-03-19 07:36:41
最好的辦法是存儲一個加密文件並對其進行解密,這樣即使根植的手機即使有權訪問它也無法讀取您的數據。當然,這是一個雞雞蛋的情況(你將在哪裏存儲加密文件的密鑰),唯一比將密鑰放入變量更好的方法是使用一些不太明確的方法生成密鑰運行時(參見this)
要打開一個專用app文件夾的文件時,可以使用此文件路徑:
File myFilePath = new File(getContext().getFilesDir() + File.separator + "myFile")
您可以檢查文件是否存在if(myFilePath.exists())
...
到一個文本文件保存到私人app目錄
FileOutputStream fos = null;
try {
fos = getContext().openFileOutput("myFile",Context.MODE_PRIVATE);
} catch (FileNotFoundException e) { }
try {
fos.write(myTextString.getBytes());
} catch (IOException e) { }
try {
fos.close();
} catch (IOException e) { }
,將圖像保存到私人app目錄:
try {
myBitmapImage.compress(CompressFormat.JPG, 90,
openFileOutput("myimage.jpg", MODE_PRIVATE));
} catch (Exception e) { }
- 1. 私人Twitter應用程序?
- 2. 如何重命名我的應用程序的私人文件?
- 3. 沒有私人文件夾的Zend應用程序
- 4. 編寫由Android應用程序創建的私人文件
- 5. iphone的私人應用程序
- 6. Android:從私人應用程序文件播放視頻
- 7. resolveUri在應用程序私人數據文件上失敗
- 8. 如何創建一個「包私人」Android應用程序?
- 9. 建立一個私人API來連接移動應用程序?
- 10. '安裝'私人應用程序腳本
- 11. 私人應用程序設置
- 12. 讓應用程序在cydia私人?
- 13. django項目與私人應用程序
- 14. 將私人訪問文件寫入其他應用程序的文件目錄
- 15. 私人消息在一個asp.net mvc應用程序與電子郵件回覆
- 16. 多個應用程序文件在一個Android應用程序
- 17. github Oauth爲node.js /快速應用程序私人電子郵件
- 18. 私人用戶文件
- 19. 如何爲單個流星應用程序創建私人包?
- 20. 我如何從一個私人應用程序與bigcommerce登錄客戶的ID
- 21. 公共和私人課程在同一個文件中
- 22. SVN私人文件
- 23. 如何與一個appengine應用程序共享一個私人的谷歌文檔
- 24. Android:應用程序私人文件夾,如果該應用程序已卸載/降級,則不會被刪除
- 25. 如何下載iOS應用程序配置文件從GitHub私人倉庫
- 26. symfony移動應用程序,供應商,私人文件夾中的bin文件夾
- 27. 應用程序永遠在活動背景 - 私人應用程序
- 28. iPhone屏幕共享應用程序中使用的私人API
- 29. 我可以使用iPhone Enterprise應用程序的私人API嗎?
- 30. 份額從一個應用程序Excel文件到另一個應用程序
你的問題是什麼呢? – drulabs 2012-03-19 07:12:28
@KKD四重問號是怎麼回事?我相信提問者很清楚要知道他應該在哪裏存儲數據到只能通過他的應用程序訪問的私人位置。 – josephus 2012-03-19 07:40:01
對不起....應該提到的問題。 (請不要詢問有關四次停站。) – drulabs 2012-03-19 08:31:56