Я хочу сохранить скриншоты карты google на моей SD-карте, и написал этот код, но я не знаю, неправильно ли я понял термин «внешнее хранилище» или я делаю что-то неправильно, потому что все работает нормально но скриншоты сохраняются в моей внутренней памяти телефона, а не сд картыХранение внутренней памяти вместо SD-карты
public void snapshot(View view) {
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
if(mExternalStorageWriteable){
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/DCIM/100MEDIA/");
dir.mkdirs();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
final File file = new File(dir, "MapScreen"+timeStamp+".png");
GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
Bitmap bitmap;
@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;
try {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};
mMap.snapshot(callback);
}
}
Я использую Htc One m8S
Посмотрите на https://developer.android.com/guide/topics/data/data-storage.html#filesExternal – antonio
Проверьте ответ на этот вопрос: http://stackoverflow.com/questions/17674634/save-and-reading-bitmaps-images-from-internal-memory-in-android – user3673952
Возможный дубликат [Как я могу получить внешний путь SD-карты для Android 4.0+?] (http://stackoverflow.com/questions/ 11281010/how-can-i-get-external-sd-card-path-for-android-4-0) – Bryan