Allow singleton providers to accept connections from other users
This is required for singleton providers like sms log.
Change-Id: Icb18a764c27dc1b43f8b8bcc24c21c91274995fd
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 5b722e2..fde8b2e 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -107,6 +107,7 @@
private PathPermission[] mPathPermissions;
private boolean mExported;
private boolean mNoPerms;
+ private boolean mSingleUser;
private final ThreadLocal<String> mCallingPackage = new ThreadLocal<String>();
@@ -460,6 +461,7 @@
boolean checkUser(int pid, int uid, Context context) {
return UserHandle.getUserId(uid) == context.getUserId()
+ || mSingleUser
|| context.checkPermission(INTERACT_ACROSS_USERS, pid, uid)
== PERMISSION_GRANTED;
}
@@ -1674,6 +1676,7 @@
setWritePermission(info.writePermission);
setPathPermissions(info.pathPermissions);
mExported = info.exported;
+ mSingleUser = (info.flags & ProviderInfo.FLAG_SINGLE_USER) != 0;
setAuthorities(info.authority);
}
ContentProvider.this.onCreate();