/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.account.ui;
import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.StringDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import me.zhanghai.android.douya.util.FragmentUtils;
public class AuthenticatorActivity extends AppCompatAccountAuthenticatorActivity {
private static final String KEY_PREFIX = AuthenticatorActivity.class.getName() + '.';
// NOTE: EXTRA_AUTH_MODE and must be supplied.
private static final String EXTRA_AUTH_MODE = KEY_PREFIX + "auth_mode";
private static final String EXTRA_USERNAME = KEY_PREFIX + "username";
public static final String AUTH_MODE_NEW = "new";
public static final String AUTH_MODE_ADD = "add";
public static final String AUTH_MODE_UPDATE = "update";
public static final String AUTH_MODE_CONFIRM = "confirm";
@Retention(RetentionPolicy.SOURCE)
@StringDef({
AUTH_MODE_NEW,
AUTH_MODE_ADD,
AUTH_MODE_CONFIRM,
AUTH_MODE_UPDATE
})
@interface AuthMode {}
public static Intent makeIntent(AccountAuthenticatorResponse response,
@AuthMode String authMode, Context context) {
return new Intent(context, AuthenticatorActivity.class)
.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response)
.putExtra(EXTRA_AUTH_MODE, authMode);
}
public static Intent makeIntent(AccountAuthenticatorResponse response,
@AuthMode String authMode, String username, Context context) {
return makeIntent(response, authMode, context)
.putExtra(EXTRA_USERNAME, username);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Calls ensureSubDecor().
findViewById(android.R.id.content);
if (savedInstanceState == null) {
Intent intent = getIntent();
@AuthMode
String authMode = intent.getStringExtra(EXTRA_AUTH_MODE);
String username = intent.getStringExtra(EXTRA_USERNAME);
FragmentUtils.add(AuthenticatorFragment.newInstance(authMode, username), this,
android.R.id.content);
}
}
}