Remove the deleted userhanle in cache to stop crashing.
Because the user handles are not up-to-date, we need to update it when necessary. Bug: 30919785 Test: This branch doesn't support robo test, testcases will be added in master branch when merged down(ag/1419729) Change-Id: Ia095c3946c49db239e0b1b2bcc8588b02158c036
This commit is contained in:
@@ -28,6 +28,8 @@ import android.content.pm.PackageManager;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.util.ArraySet;
|
||||
@@ -73,6 +75,7 @@ public class SettingsDrawerActivity extends Activity {
|
||||
private FrameLayout mContentHeaderContainer;
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private boolean mShowingMenu;
|
||||
private UserManager mUserManager;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
@@ -110,6 +113,8 @@ public class SettingsDrawerActivity extends Activity {
|
||||
onTileClicked(mDrawerAdapter.getTile(position));
|
||||
};
|
||||
});
|
||||
|
||||
mUserManager = UserManager.get(this);
|
||||
if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
|
||||
+ " ms");
|
||||
}
|
||||
@@ -257,6 +262,7 @@ public class SettingsDrawerActivity extends Activity {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
updateUserHandlesIfNeeded(tile);
|
||||
int numUserHandles = tile.userHandle.size();
|
||||
if (numUserHandles > 1) {
|
||||
ProfileSelectDialog.show(getFragmentManager(), tile);
|
||||
@@ -278,6 +284,19 @@ public class SettingsDrawerActivity extends Activity {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void updateUserHandlesIfNeeded(Tile tile) {
|
||||
List<UserHandle> userHandles = tile.userHandle;
|
||||
|
||||
for (int i = userHandles.size()-1; i >= 0; i--) {
|
||||
if (mUserManager.getUserInfo(userHandles.get(i).getIdentifier()) == null) {
|
||||
if (DEBUG_TIMING) {
|
||||
Log.d(TAG, "Delete the user: " + userHandles.get(i).getIdentifier());
|
||||
}
|
||||
userHandles.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void onTileClicked(Tile tile) {
|
||||
if (openTile(tile)) {
|
||||
finish();
|
||||
|
||||
Reference in New Issue
Block a user