2014-09-25 100 views
0

我對Android生態系統非常陌生。我可以做出明確結論:任何應用程序都可以讀取外部SD存儲器中的任何存儲文件嗎?從外部SD卡存儲器訪問文件

小心儘管MediaExpress內容提供程序無法訪問getExternalFilesDir()和getExternalFilesDirs()提供的目錄,但具有READ_EXTERNAL_STORAGE權限的其他應用程序可以訪問外部存儲上的所有文件,包括這些文件。如果您需要完全限制文件的訪問權限,則應將文件寫入內部存儲器。 (http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

+1

外部SD將被格式化FAT16/FAT32,其具有用於權限絕對沒有能力。例如是的,任何人都可以在外部卡上讀取/寫入任何他們想要的東西。 – 2014-09-25 15:57:03

回答

1

是的,你可以,但是如果你在KitKat OS及以上版本上部署應用程序,你需要知道一些重要的信息。您不能再像以前那樣在SD卡/內部存儲器中的任何位置進行書寫。公共目錄仍然可以寫入(下載,圖片,視頻等),但就是這樣。您可以爲您的應用寫入專用存儲,並且您的應用只能從中讀取,但是如果您正在瀏覽sdCard的內容,則無法查看該位置或文件。唯一的例外是如果你的手機是根植的。

http://www.androidcentral.com/kitkat-sdcard-changes

寫入的實施例與APP私有存儲:

//Write to internal app storage 
      FileOutputStream internalStorage = null; 

     try 
     { 
      internalStorage = openFileOutput("capturedImage", Context.MODE_PRIVATE); 

     } 
     catch (FileNotFoundException e1) 
     { 
      e1.printStackTrace(); 
     } 

     BufferedOutputStream buffer_output = new BufferedOutputStream(internalStorage); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, buffer_output); 
     try 
     { 
      buffer_output.flush(); 
      buffer_output.close(); 
     } 
     catch (IOException e) 
     { 

      e.printStackTrace(); 
     } 
+0

我對此有點困惑:「你不能像以前那樣在SD卡/內部存儲的任何位置寫入數據。」有了SD卡,你是否意味着一張外置SD卡? – user523234 2014-09-26 16:37:46

+0

因此,使用KitKat OS及以上版本,任何應用程序都可以讀取外部SD卡上的任何文件? – user523234 2014-09-26 16:38:25

+0

摘自: 「保存應用程序專用的文件 如果您正在處理的文件不適合其他應用程序使用(例如圖形紋理或僅由您的應用程序使用的聲音效果),則應使用專用存儲目錄通過調用getExternalFilesDir()。「 這似乎與我的其他摘錄相矛盾。 – user523234 2014-09-26 16:42:17

相關問題