android 4.1のマルチユーザーについて 〜その1〜
4.2で対応になるマルチユーザーについて、4.1でも仕組み自体はあるとのことなので色々試してみた。
知っている限りではadb上でのpmコマンドでしか作成は出来ない模様(要root)
※2012/11/04 20:21 追記
[設定アプリ -> ユーザーと制限 -> ユーザーを追加] からユーザーが追加出来ました…。
ソースは packages/apps/Settings/src/com/android/settings/user/ あたりに。
・ユーザー作成
pm create-user USER_NAME
・ユーザー削除
pm create-user USER_ID
・ユーザーリスト表示
pm list-users
※こんな感じで表示される
Users:
UserInfo{0:Primary:3}
UserInfo{1:test01:0}
コマンドはここで定義されている。
Android/frameworks/base/cmds/pm/src/com/android/commands/pm/Pm.java
で、追加したユーザーに切り替えて設定アプリを立ち上げると、表示される項目が少ない。
なので調べてみると、以下の様に設定アプリの方でUSER_IDを見ているようで
} else if (id == R.id.user_settings) {
if (!mEnableUserManagement
|| !UserId.MU_ENABLED || UserId.myUserId() != 0
|| !getResources().getBoolean(R.bool.enable_user_management)
|| Utils.isMonkeyRunning()) {
target.remove(header);
}
}
if (UserId.MU_ENABLED && UserId.myUserId() != 0
&& !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
target.remove(header);
}
このmyUserId()の判別を無効にすると、Primaryユーザーと同様の項目が見えるようになった。
※2012/11/04 20:54 追記
どうやら Settings.java の SETTINGS_FOR_RESTRICTED にて見せる項目を設定している様です。
// Show only these settings for restricted users
private int[] SETTINGS_FOR_RESTRICTED = {
R.id.wifi_settings,
R.id.bluetooth_settings,
R.id.sound_settings,
R.id.display_settings,
R.id.security_settings,
R.id.account_settings,
R.id.about_settings
};
正直試すのは4.2でいいような気がするけど、予習ということでwww