summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/SDCard.java
diff options
context:
space:
mode:
authorjinwu <jinwu@codeaurora.org>2018-04-18 18:03:00 +0800
committerjinwu <jinwu@codeaurora.org>2018-04-19 13:38:16 +0800
commit9b4755c0ce090a14dfb7599a238b044dcdfd5ee4 (patch)
tree85dc5429a36e63e0742f5c019a326ec7ccdd545b /src/com/android/camera/SDCard.java
parenta58cf42efd2cac61ceeb5722c5c2c1e0e51fdd85 (diff)
downloadandroid_packages_apps_Snap-9b4755c0ce090a14dfb7599a238b044dcdfd5ee4.tar.gz
android_packages_apps_Snap-9b4755c0ce090a14dfb7599a238b044dcdfd5ee4.tar.bz2
android_packages_apps_Snap-9b4755c0ce090a14dfb7599a238b044dcdfd5ee4.zip
Fix issue of can't save image in sdcard on P
Android P not allow apps to write/read SD Card public area and only allow apps to access the application private area. So save to specific path. Change-Id: I3226eefd75f8a81f7b730ba26a8fbbbc6ead02a7
Diffstat (limited to 'src/com/android/camera/SDCard.java')
-rw-r--r--src/com/android/camera/SDCard.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/com/android/camera/SDCard.java b/src/com/android/camera/SDCard.java
index b88e32245..3d3ce6708 100644
--- a/src/com/android/camera/SDCard.java
+++ b/src/com/android/camera/SDCard.java
@@ -32,16 +32,20 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.os.Build;
import android.os.Environment;
import android.os.storage.StorageVolume;
import android.os.storage.StorageManager;
import android.util.Log;
+import java.io.File;
+
public class SDCard {
private static final String TAG = "SDCard";
private static final int VOLUME_SDCARD_INDEX = 1;
+ private Context mContext;
private StorageManager mStorageManager = null;
private StorageVolume mVolume = null;
private String mPath = null;
@@ -62,7 +66,17 @@ public class SDCard {
return null;
}
if (mPath == null) {
- mPath = mVolume.getPath() + "/DCIM/Camera";
+ File[] dirs = mContext.getExternalFilesDirs(null);
+ if (dirs != null) {
+ String dir;
+ for (int i=0; i<dirs.length; i++) {
+ dir = dirs[i].getAbsolutePath();
+ if (dir.startsWith(mVolume.getPath())) {
+ mPath = dir;
+ break;
+ }
+ }
+ }
}
return mPath;
}
@@ -93,6 +107,7 @@ public class SDCard {
private SDCard(Context context) {
try {
+ mContext = context;
mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
initVolume();
registerMediaBroadcastreceiver(context);