[英]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())));
我正在制作一个Android应用,我想将下载的图像存储到sdcard或外部存储中。
Android SDK提供对外部存储的访问。 这是“ sdcard”还是其他取决于设备制造商。
我面临的问题是,在某些手机上,图像存储在sdcard上,而在某些手机上,图像存储在内部存储器中,特别是在诸如Galaxy S4之类的三星设备中。
该代码将图像存储在外部存储器中。 它不会将它们存储在内部存储中。 外部存储设备是否可移动取决于设备制造商。
您不妨考虑阅读有关外部存储的文档 。
您还应该:
不要使用字符串串联来创建File
对象。 使用适当的File
构造函数。
将数据存储在比外部存储根目录下的硬编码TestApp
目录更好的位置,例如getExternalFilesDir()
或getExternalCacheDir()
。 多年来,您的方法一直被认为是较差的形式,因为它会使用户的外部存储混乱。
使用更专注的方法来更新MediaStore
,例如使用MediaScannerConnection
和scanFile()
,而不是发出操作系统广播,就好像您是操作系统一样。
确保在后台线程上完成所有这些工作(从代码片段中不清楚您是否在)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.