簡體   English   中英

如何始終將應用程序存儲到sdcard /外部存儲

[英]how to always store application to sdcard/external storage

我正在制作一個Android應用,我想將下載的圖像存儲到sdcard或外部存儲中。 我面臨的問題是,在某些手機上,圖像存儲在sdcard上,而在某些手機上,圖像存儲在內部存儲器中,特別是在諸如Galaxy S4之類的三星設備中。 請參閱附件中的圖像以獲取S4中的文件路徑。

File wallpaperDirectory = new File(
                    Environment.getExternalStorageDirectory()
                            + "/TestApp/");
            wallpaperDirectory.mkdirs();
            FileOutputStream out = new FileOutputStream(Environment
                    .getExternalStorageDirectory().toString()
                    + "/TestApp/" + secret + ".jpg");
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            Toast.makeText(
                    getApplicationContext(),
                    "Wallpaper saved sucessfully \n"
                            + Environment.getExternalStorageDirectory()
                                    .toString() + "/TestApp/" + secret
                            + ".jpg", Toast.LENGTH_SHORT).show();
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse("file://"
                            + Environment.getExternalStorageDirectory())));

在S4上存儲

我正在制作一個Android應用,我想將下載的圖像存儲到sdcard或外部存儲中。

Android SDK提供對外部存儲的訪問。 這是“ sdcard”還是其他取決於設備制造商。

我面臨的問題是,在某些手機上,圖像存儲在sdcard上,而在某些手機上,圖像存儲在內部存儲器中,特別是在諸如Galaxy S4之類的三星設備中。

該代碼將圖像存儲在外部存儲器中。 它不會將它們存儲在內部存儲中。 外部存儲設備是否可移動取決於設備制造商。

您不妨考慮閱讀有關外部存儲的文檔

您還應該:

  • 不要使用字符串串聯來創建File對象。 使用適當的File構造函數。

  • 將數據存儲在比外部存儲根目錄下的硬編碼TestApp目錄更好的位置,例如getExternalFilesDir()getExternalCacheDir() 多年來,您的方法一直被認為是較差的形式,因為它會使用戶的外部存儲混亂。

  • 使用更專注的方法來更新MediaStore ,例如使用MediaScannerConnectionscanFile() ,而不是發出操作系統廣播,就好像您是操作系統一樣。

  • 確保在后台線程上完成所有這些工作(從代碼片段中不清楚您是否在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM