google在external storage的权限限制导致的原因
要解决问题,需要给external storage 一个media rw权限就可以
diff --git a/base/services/core/java/com/android/server/SystemConfig.java b/base/services/core/java/com/android/server/SystemConfig.java
index cf2a49f..88dd54d 100644
--- a/base/services/core/java/com/android/server/SystemConfig.java
+++ b/base/services/core/java/com/android/server/SystemConfig.java
@@ -352,6 +352,17 @@ public class SystemConfig {
if (gidStr != null) {
int gid = Process.getGidForName(gidStr);
perm.gids = appendInt(perm.gids, gid);
+/* Tue, 09 Jun 2015 15:30:14 +0800
+ * add media_rw permission to external sdcard if BUILD_CTS=no
+ */
+ if (!FeatureOption.BUILD_CTS) {
+ if ("android.permission.WRITE_EXTERNAL_STORAGE".equals(name) && "sdcard_rw".equals(gidStr)
+ || "android.permission.ACCESS_ALL_EXTERNAL_STORAGE".equals(name) && "sdcard_all".equals(gidStr)) {
+ perm.gids = appendInt(perm.gids, Process.getGidForName("media_rw"));
+ Slog.d(TAG, "add permission -> " + name + ", to group -> media_rw");
+ }
+ }
+// End
} else {
Slog.w(TAG, "<group> without gid at "
+ parser.getPositionDescription());
要解决问题,需要给external storage 一个media rw权限就可以
diff --git a/base/services/core/java/com/android/server/SystemConfig.java b/base/services/core/java/com/android/server/SystemConfig.java
index cf2a49f..88dd54d 100644
--- a/base/services/core/java/com/android/server/SystemConfig.java
+++ b/base/services/core/java/com/android/server/SystemConfig.java
@@ -352,6 +352,17 @@ public class SystemConfig {
if (gidStr != null) {
int gid = Process.getGidForName(gidStr);
perm.gids = appendInt(perm.gids, gid);
+/* Tue, 09 Jun 2015 15:30:14 +0800
+ * add media_rw permission to external sdcard if BUILD_CTS=no
+ */
+ if (!FeatureOption.BUILD_CTS) {
+ if ("android.permission.WRITE_EXTERNAL_STORAGE".equals(name) && "sdcard_rw".equals(gidStr)
+ || "android.permission.ACCESS_ALL_EXTERNAL_STORAGE".equals(name) && "sdcard_all".equals(gidStr)) {
+ perm.gids = appendInt(perm.gids, Process.getGidForName("media_rw"));
+ Slog.d(TAG, "add permission -> " + name + ", to group -> media_rw");
+ }
+ }
+// End
} else {
Slog.w(TAG, "<group> without gid at "
+ parser.getPositionDescription());