use of android.content.SyncAdapterType in project platform_frameworks_base by android.
the class AuthenticatorHelper method buildAccountTypeToAuthoritiesMap.
private void buildAccountTypeToAuthoritiesMap() {
mAccountTypeToAuthorities.clear();
SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(mUserHandle.getIdentifier());
for (int i = 0, n = syncAdapters.length; i < n; i++) {
final SyncAdapterType sa = syncAdapters[i];
ArrayList<String> authorities = mAccountTypeToAuthorities.get(sa.accountType);
if (authorities == null) {
authorities = new ArrayList<String>();
mAccountTypeToAuthorities.put(sa.accountType, authorities);
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Added authority " + sa.authority + " to accountType " + sa.accountType);
}
authorities.add(sa.authority);
}
}
use of android.content.SyncAdapterType in project platform_frameworks_base by android.
the class SyncManager method whiteListExistingSyncAdaptersIfNeeded.
private void whiteListExistingSyncAdaptersIfNeeded() {
if (!mSyncStorageEngine.shouldGrantSyncAdaptersAccountAccess()) {
return;
}
List<UserInfo> users = mUserManager.getUsers(true);
final int userCount = users.size();
for (int i = 0; i < userCount; i++) {
UserHandle userHandle = users.get(i).getUserHandle();
final int userId = userHandle.getIdentifier();
for (RegisteredServicesCache.ServiceInfo<SyncAdapterType> service : mSyncAdapters.getAllServices(userId)) {
String packageName = service.componentName.getPackageName();
for (Account account : mAccountManager.getAccountsByTypeAsUser(service.type.accountType, userHandle)) {
if (!canAccessAccount(account, packageName, userId)) {
mAccountManager.updateAppPermission(account, AccountManager.ACCOUNT_ACCESS_TOKEN_TYPE, service.uid, true);
}
}
}
}
}
use of android.content.SyncAdapterType in project platform_frameworks_base by android.
the class SyncManager method getIsSyncable.
private int getIsSyncable(Account account, int userId, String providerName) {
int isSyncable = mSyncStorageEngine.getIsSyncable(account, userId, providerName);
UserInfo userInfo = UserManager.get(mContext).getUserInfo(userId);
// If it's not a restricted user, return isSyncable.
if (userInfo == null || !userInfo.isRestricted())
return isSyncable;
// Else check if the sync adapter has opted-in or not.
RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo = mSyncAdapters.getServiceInfo(SyncAdapterType.newKey(providerName, account.type), userId);
if (syncAdapterInfo == null)
return AuthorityInfo.NOT_SYNCABLE;
PackageInfo pInfo = null;
try {
pInfo = AppGlobals.getPackageManager().getPackageInfo(syncAdapterInfo.componentName.getPackageName(), 0, userId);
if (pInfo == null)
return AuthorityInfo.NOT_SYNCABLE;
} catch (RemoteException re) {
// Shouldn't happen.
return AuthorityInfo.NOT_SYNCABLE;
}
if (pInfo.restrictedAccountType != null && pInfo.restrictedAccountType.equals(account.type)) {
return isSyncable;
} else {
return AuthorityInfo.NOT_SYNCABLE;
}
}
use of android.content.SyncAdapterType in project android_frameworks_base by crdroidandroid.
the class AccountSyncSettingsBackupHelper method serializeAccountSyncSettingsToJSON.
/**
* Fetch and serialize Account and authority information as a JSON Array.
*/
private JSONObject serializeAccountSyncSettingsToJSON() throws JSONException {
Account[] accounts = mAccountManager.getAccounts();
SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(mContext.getUserId());
// Create a map of Account types to authorities. Later this will make it easier for us to
// generate our JSON.
HashMap<String, List<String>> accountTypeToAuthorities = new HashMap<String, List<String>>();
for (SyncAdapterType syncAdapter : syncAdapters) {
// Skip adapters that aren’t visible to the user.
if (!syncAdapter.isUserVisible()) {
continue;
}
if (!accountTypeToAuthorities.containsKey(syncAdapter.accountType)) {
accountTypeToAuthorities.put(syncAdapter.accountType, new ArrayList<String>());
}
accountTypeToAuthorities.get(syncAdapter.accountType).add(syncAdapter.authority);
}
// Generate JSON.
JSONObject backupJSON = new JSONObject();
backupJSON.put(KEY_VERSION, JSON_FORMAT_VERSION);
backupJSON.put(KEY_MASTER_SYNC_ENABLED, ContentResolver.getMasterSyncAutomatically());
JSONArray accountJSONArray = new JSONArray();
for (Account account : accounts) {
List<String> authorities = accountTypeToAuthorities.get(account.type);
// settings for us to restore.
if (authorities == null || authorities.isEmpty()) {
continue;
}
JSONObject accountJSON = new JSONObject();
accountJSON.put(KEY_ACCOUNT_NAME, account.name);
accountJSON.put(KEY_ACCOUNT_TYPE, account.type);
// Add authorities for this Account type and check whether or not sync is enabled.
JSONArray authoritiesJSONArray = new JSONArray();
for (String authority : authorities) {
int syncState = ContentResolver.getIsSyncable(account, authority);
boolean syncEnabled = ContentResolver.getSyncAutomatically(account, authority);
JSONObject authorityJSON = new JSONObject();
authorityJSON.put(KEY_AUTHORITY_NAME, authority);
authorityJSON.put(KEY_AUTHORITY_SYNC_STATE, syncState);
authorityJSON.put(KEY_AUTHORITY_SYNC_ENABLED, syncEnabled);
authoritiesJSONArray.put(authorityJSON);
}
accountJSON.put(KEY_ACCOUNT_AUTHORITIES, authoritiesJSONArray);
accountJSONArray.put(accountJSON);
}
backupJSON.put(KEY_ACCOUNTS, accountJSONArray);
return backupJSON;
}
use of android.content.SyncAdapterType in project android_frameworks_base by crdroidandroid.
the class AuthenticatorHelper method buildAccountTypeToAuthoritiesMap.
private void buildAccountTypeToAuthoritiesMap() {
mAccountTypeToAuthorities.clear();
SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(mUserHandle.getIdentifier());
for (int i = 0, n = syncAdapters.length; i < n; i++) {
final SyncAdapterType sa = syncAdapters[i];
ArrayList<String> authorities = mAccountTypeToAuthorities.get(sa.accountType);
if (authorities == null) {
authorities = new ArrayList<String>();
mAccountTypeToAuthorities.put(sa.accountType, authorities);
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Added authority " + sa.authority + " to accountType " + sa.accountType);
}
authorities.add(sa.authority);
}
}
Aggregations