summaryrefslogtreecommitdiff
path: root/core/java/android/accounts/AccountManager.java
diff options
context:
space:
mode:
authorSvet Ganov <svetoslavganov@google.com>2016-08-24 00:08:00 -0700
committerSvet Ganov <svetoslavganov@google.com>2016-08-24 00:13:36 -0700
commit890a210e41d6a77a87370e6782c2ee373fa857d1 (patch)
treeae061364e800d5348e91023b54dc490056b5ea1d /core/java/android/accounts/AccountManager.java
parent575bb0fd33aadbead46796e70490a178ed4772b4 (diff)
parenteeeebd346a06cc1af2366b933355ac49717136fa (diff)
resolve merge conflicts of eeeebd3 to master
Change-Id: I3aa0d1b9228be408837f7dd93a9b8268e564fc65
Diffstat (limited to 'core/java/android/accounts/AccountManager.java')
-rw-r--r--core/java/android/accounts/AccountManager.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index 531b5d7d58d9..26e7dac587f4 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -18,6 +18,7 @@ package android.accounts;
import static android.Manifest.permission.GET_ACCOUNTS;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.Size;
@@ -28,6 +29,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.IntentSender;
import android.content.res.Resources;
import android.database.SQLException;
import android.os.Build;
@@ -261,6 +263,15 @@ public class AccountManager {
"android.accounts.AccountAuthenticator";
public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
+ /**
+ * Token for the special case where a UID has access only to an account
+ * but no authenticator specific auth tokens.
+ *
+ * @hide
+ */
+ public static final String ACCOUNT_ACCESS_TOKEN =
+ "com.android.abbfd278-af8b-415d-af8b-7571d5dab133";
+
private final Context mContext;
private final IAccountManager mService;
private final Handler mMainHandler;
@@ -3059,4 +3070,49 @@ public class AccountManager {
}
}.start();
}
+
+ /**
+ * Gets whether a given package under a user has access to an account.
+ * Can be called only from the system UID.
+ *
+ * @param account The account for which to check.
+ * @param packageName The package for which to check.
+ * @param userHandle The user for which to check.
+ * @return True if the package can access the account.
+ *
+ * @hide
+ */
+ public boolean hasAccountAccess(@NonNull Account account, @NonNull String packageName,
+ @NonNull UserHandle userHandle) {
+ try {
+ return mService.hasAccountAccess(account, packageName, userHandle);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates an intent to request access to a given account for a UID.
+ * The returned intent should be stated for a result where {@link
+ * Activity#RESULT_OK} result means access was granted whereas {@link
+ * Activity#RESULT_CANCELED} result means access wasn't granted. Can
+ * be called only from the system UID.
+ *
+ * @param account The account for which to request.
+ * @param packageName The package name which to request.
+ * @param userHandle The user for which to request.
+ * @return The intent to request account access or null if the package
+ * doesn't exist.
+ *
+ * @hide
+ */
+ public IntentSender createRequestAccountAccessIntentSenderAsUser(@NonNull Account account,
+ @NonNull String packageName, @NonNull UserHandle userHandle) {
+ try {
+ return mService.createRequestAccountAccessIntentSenderAsUser(account, packageName,
+ userHandle);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}