![](/img/trans.png)
[英]How to write files on external sdcard (physical card) with Phonegap/Cordova on Android?
[英]How to write files to external storage (sdcard)
我知道這可能已被多次回答,我已經搜索過,但我無法解決我的問題。 每次我嘗試寫入SD卡時,它似乎都會進入內部存儲。 我的代碼行很簡單
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() +"/mydir");
dir.mkdirs();
當我轉到“我的文件”時,該目錄始終顯示在/ storage / emulated / 0中,而不是顯示在SD卡上。 我擁有清單中設置的所有權限。 我有什么簡單的東西嗎?
PS我的設備是注3.我可以手動將文件復制到SD卡。
如何將文件寫入外部存儲(SD卡)
在大多數Android設備上,外部存儲不是“sdcard”。
當我轉到“我的文件”時,該目錄始終顯示在/ storage / emulated / 0中,而不是顯示在SD卡上
這是因為/storage/emulated/0
是外部存儲。
引用文檔 :
每個Android兼容設備都支持可用於保存文件的共享“外部存儲”。 這可以是可移動存儲介質(例如SD卡)或內部(不可移動)存儲。
Android SDK幾乎不支持其他存儲位置,例如SD卡。 Android 4.4有一點,如同一文檔頁面所述:
有時,已經分配內部存儲器分區以用作外部存儲器的設備也可以提供SD卡插槽。 當這樣的設備運行Android 4.3及更低版本時,getExternalFilesDir()方法僅提供對內部分區的訪問,並且您的應用程序無法讀取或寫入SD卡。 但是,從Android 4.4開始,您可以通過調用getExternalFilesDirs()來訪問這兩個位置,它返回一個包含每個位置條目的File數組。 陣列中的第一個條目被視為主要外部存儲,您應該使用該位置,除非它已滿或不可用。 如果您想同時訪問兩個可能的位置,同時也支持Android 4.3及更低版本,請使用支持庫的靜態方法ContextCompat.getExternalFilesDirs()。 這也會返回一個File數組,但在Android 4.3及更低版本中只包含一個條目。
在這里,我發布了用於查找sdcard路徑的代碼(在問題的正文中)
它應該解決你的問題。 “外部”存儲並不總是您的SD卡,因為許多Android設備將內部存儲器視為外部分區。 真實外部存儲(您的SD卡)的路徑由設備的構造函數設置,並且沒有用於獲取它的標准API。
打印
dir.toString()
以上,看看你得到了什么。 然后將其與之比較
File dir = new File(getExternalFilesDir(null) + File.separator + "mydir");
如果你喜歡第二種選擇,你應該得到(我做了)/storage/sdcard0/data/your.package.name/files/mydir,你上面的目錄是mydir,而不是My Files?
你需要手動找到外置SD卡,這取決於手機。
請參閱本教程 ,其中有一個示例,說明如何測試SD卡的不同路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.