diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cf1f888ab4d..795a2e8b7a5 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -6,6 +6,7 @@
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fb236b3639e..e07013102c9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4065,4 +4065,9 @@
+
+
+ Account for content
+
+ Photo ID
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 2089bac91a0..96ce0f1f71f 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -106,13 +106,6 @@
-
-
-
+
+
+
+
+
0) {
+ if (mUserId >= 0) {
initExistingUser();
} else {
initNewUser();
@@ -124,6 +140,9 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ if (mUserId == 0) {
+ return;
+ }
MenuItem addAccountItem = menu.add(0, MENU_REMOVE_USER, 0,
mNewUser ? R.string.user_discard_user_menu : R.string.user_remove_user_menu);
addAccountItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
@@ -153,6 +172,9 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
if (foundUser != null) {
mNamePref.setSummary(foundUser.name);
mNamePref.setText(foundUser.name);
+ if (foundUser.iconPath != null) {
+ setPhotoId(foundUser.iconPath);
+ }
}
}
@@ -200,6 +222,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
}
private void refreshApps() {
+ if (mUserId == 0) return;
mSystemAppGroup.removeAll();
mInstalledAppGroup.removeAll();
@@ -254,7 +277,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
return false;
}
try {
- mIPm.updateUserName(mUserId, (String) newValue);
+ mIPm.setUserName(mUserId, (String) newValue);
mNamePref.setSummary((String) newValue);
} catch (RemoteException re) {
return false;
@@ -282,4 +305,72 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
return null;
}
}
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ if (preference == mAccountPref) {
+// Intent launch = AccountManager.newChooseAccountsIntent(null, null, new String[]{"com.google"}, false, null,
+// null, null, null);
+ } else if (preference == mPicturePref) {
+ Intent intent = new Intent();
+ intent.setType("image/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+
+ startActivityForResult(intent, RESULT_PICK_IMAGE);
+ }
+ return false;
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (resultCode != Activity.RESULT_OK) {
+ return;
+ }
+ switch (requestCode) {
+ case RESULT_PICK_IMAGE:
+ if (data.getData() != null) {
+ Uri imageUri = data.getData();
+ System.err.println("imageUri = " + imageUri);
+ cropImage(imageUri);
+ }
+ break;
+ case RESULT_CROP_IMAGE:
+ saveCroppedImage(data);
+ break;
+ }
+ }
+
+ private void cropImage(Uri imageUri) {
+ final Uri inputPhotoUri = imageUri;
+ Intent intent = new Intent("com.android.camera.action.CROP");
+ intent.setDataAndType(inputPhotoUri, "image/*");
+ intent.putExtra("crop", "true");
+ intent.putExtra("aspectX", 1);
+ intent.putExtra("aspectY", 1);
+ intent.putExtra("outputX", 96);
+ intent.putExtra("outputY", 96);
+ intent.putExtra("return-data", true);
+ startActivityForResult(intent, RESULT_CROP_IMAGE);
+ }
+
+ private void saveCroppedImage(Intent data) {
+ try {
+ if (data.hasExtra("data")) {
+ Bitmap bitmap = (Bitmap) data.getParcelableExtra("data");
+ ParcelFileDescriptor fd = mIPm.setUserIcon(mUserId);
+ if (fd != null) {
+ bitmap.compress(CompressFormat.PNG, 100,
+ new ParcelFileDescriptor.AutoCloseOutputStream(fd));
+ setPhotoId(mPm.getUser(mUserId).iconPath);
+ }
+ }
+ } catch (RemoteException re) {
+ }
+ }
+
+ private void setPhotoId(String realPath) {
+ Drawable d = Drawable.createFromPath(realPath);
+ if (d == null) return;
+ mPicturePref.setIcon(d);
+ }
}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 93805867194..d32cb45efb7 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -17,6 +17,7 @@
package com.android.settings.users;
import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
@@ -83,15 +84,23 @@ public class UserSettings extends SettingsPreferenceFragment
mUserListCategory.removeAll();
for (UserInfo user : users) {
- if (user.id == 0) continue;
Preference pref = new Preference(getActivity());
pref.setTitle(user.name);
pref.setOnPreferenceClickListener(this);
pref.setKey("id=" + user.id);
+ if (user.iconPath != null) {
+ setPhotoId(pref, user.iconPath);
+ }
mUserListCategory.addPreference(pref);
}
}
+ private void setPhotoId(Preference pref, String realPath) {
+ Drawable d = Drawable.createFromPath(realPath);
+ if (d == null) return;
+ pref.setIcon(d);
+ }
+
@Override
public boolean onPreferenceClick(Preference pref) {
String sid = pref.getKey();