Я пытаюсь создать приложение, я хотел бы переключиться между двумя пользователями Android (Алиса (владелец) и Боб). Когда Алиса является текущим пользователем, я хочу открыть приложение и нажать кнопку и переключиться на учетную запись Боба и наоборот.)Как переключить пользователей в приложение на Android?
Я установил приложение как администратор устройства, используя класс DevicePolicyManager
, поэтому я могу использовать switchUser
, но я не понимаю, как установить userHandler
, чтобы я мог переключать пользователей.
public class DevicePolicyAdmin extends Activity {
protected static final int REQUEST_ENABLE = 1;
DevicePolicyManager appDevicePolicyManager;
ComponentName appDevicePolicyAdmin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_policy_admin);
appDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
appDevicePolicyAdmin = new ComponentName(this,
MyDevicePolicyReceiver.class);
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN,
appDevicePolicyAdmin);
intent.putExtra(
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
getString(R.string.admin_explanation));
startActivityForResult(intent, REQUEST_ENABLE);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
appDevicePolicyManager.switchUser(appDevicePolicyAdmin, android.os.Process.myUserHandle());
}
}
Другой подход, который я пытался использовал AccountManager
класс, но я могу только получить электронную почту Токи пользователя. И этот класс, похоже, не имеет метода switchUser
.
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccountsByType("com.google");
StringBuilder builder = new StringBuilder();
for (Account s : list)
{
builder.append(s + " ");
}
setContentView(R.layout.activity_device_policy_admin);
TextView txt = (TextView) findViewById(R.id.textView);
txt.setText(builder.toString());
Вот изображение того, что я пытаюсь реализовать.
Это в основном приложение, которое делает то же самое, как если бы мы Заходим в настройки Меню> Пользователи.
Похоже, вы хотите сделать это как администратор. Было бы достаточно, чтобы Алиса вышла, чтобы Боб мог войти? Или администратор должен сделать переключатель? –
Каждый пользователь должен иметь возможность сделать коммутатор. Пример: Алиса открывает приложение, нажимает кнопку и переключается на пользовательский боб. Боб также мог открыть приложение и вернуться к Алисе. Я мог бы попробовать ваш подход. Сделайте Алису выйди, чтобы Боб мог войти. Любые идеи о том, как я могу это реализовать. Просто начал изучать Android вчера, и я не очень хорошо знаю API. – Ruma
Какова концепция «учетной записи» для вашего приложения? Нужно ли пользователям проходить проверку подлинности на сервере? У вас есть собственный сервер приложений со счетами/паролями? Или вы используете стороннюю компанию, такую как Facebook или Google? Или пользователям вообще не нужны пароли? Как создавать учетные записи для устройства? Как вы решаете: «Хорошо, Алиса получает учетную запись, а Боб получает учетную запись». Извините за все вопросы, это все, что нужно подумать о создании приложения. Высокий порядок для тех, кто только начинает на Android! Я могу показать вам два пути: жесткий и еще более жесткий путь. –