diff options
author | jinwu <jinwu@codeaurora.org> | 2018-04-18 18:03:00 +0800 |
---|---|---|
committer | jinwu <jinwu@codeaurora.org> | 2018-04-19 13:38:16 +0800 |
commit | 9b4755c0ce090a14dfb7599a238b044dcdfd5ee4 (patch) | |
tree | 85dc5429a36e63e0742f5c019a326ec7ccdd545b /src/com/android | |
parent | a58cf42efd2cac61ceeb5722c5c2c1e0e51fdd85 (diff) | |
download | android_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')
-rw-r--r-- | src/com/android/camera/SDCard.java | 17 |
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); |