Merge "Protect against invalid authority in account sync pref." into pi-dev am: 2c15909bfc

am: 2e49b6fdac

Change-Id: I124cedfa18452ce936690b380d4d9b35f5c457f9
This commit is contained in:
Fan Zhang
2018-04-10 16:13:33 -07:00
committed by android-build-merger
4 changed files with 68 additions and 9 deletions

View File

@@ -194,25 +194,24 @@ public class AccountSyncSettings extends AccountPreferenceBase {
} else {
item.setup(account, authority, packageName, uid);
}
final PackageManager packageManager = getPackageManager();
item.setPersistent(false);
final ProviderInfo providerInfo = getPackageManager().resolveContentProviderAsUser(
final ProviderInfo providerInfo = packageManager.resolveContentProviderAsUser(
authority, 0, mUserHandle.getIdentifier());
if (providerInfo == null) {
return;
}
CharSequence providerLabel = providerInfo.loadLabel(getPackageManager());
final CharSequence providerLabel = providerInfo.loadLabel(packageManager);
if (TextUtils.isEmpty(providerLabel)) {
Log.e(TAG, "Provider needs a label for authority '" + authority + "'");
return;
}
String title = getString(R.string.sync_item_title, providerLabel);
item.setTitle(title);
item.setTitle(providerLabel);
item.setKey(authority);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuItem syncNow = menu.add(0, MENU_SYNC_NOW_ID, 0,
getString(R.string.sync_menu_sync_now))
.setIcon(R.drawable.ic_menu_refresh_holo_dark);

View File

@@ -21,6 +21,7 @@ import android.app.ActivityManager;
import android.content.Context;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.PreferenceViewHolder;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
@@ -64,6 +65,7 @@ public class SyncStateSwitchPreference extends SwitchPreference {
mAuthority = authority;
mPackageName = packageName;
mUid = uid;
setVisible(!TextUtils.isEmpty(mAuthority));
notifyChanged();
}