Android 如何在检查用户是否登录时停止活动的启动?
当用户启动我的应用程序时,我尝试实现以下目标: 1-如果用户未登录,则显示登录屏幕。 2-如果用户已经创建了一个帐户,并且有一个有效的令牌,则显示开始屏幕 为此,我根据这里的教程实现了一个自定义验证器 代码是有效的,我的问题是它简要地显示了当前的活动UI,然后切换到我的AccountAuthenticator提供的添加帐户UI。我怎样才能解决这个问题 代码如下:Android 如何在检查用户是否登录时停止活动的启动?,android,accountmanager,Android,Accountmanager,当用户启动我的应用程序时,我尝试实现以下目标: 1-如果用户未登录,则显示登录屏幕。 2-如果用户已经创建了一个帐户,并且有一个有效的令牌,则显示开始屏幕 为此,我根据这里的教程实现了一个自定义验证器 代码是有效的,我的问题是它简要地显示了当前的活动UI,然后切换到我的AccountAuthenticator提供的添加帐户UI。我怎样才能解决这个问题 代码如下: @Override public void onStart(){ super.onStart(); getTok
@Override
public void onStart(){
super.onStart();
getTokenForAccountCreateIfNeeded(AccountGeneral.ACCOUNT_TYPE, AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAccountManager = AccountManager.get(this);
}
/**
* Get an auth token for the account.
* If not exist - add it and then return its auth token.
* If one exist - return its auth token.
* If more than one exists - show a picker and return the select account's auth token.
* @param accountType
* @param authTokenType
*/
private void getTokenForAccountCreateIfNeeded(String accountType, String authTokenType) {
final AccountManagerFuture<Bundle> future = mAccountManager.getAuthTokenByFeatures(accountType, authTokenType, null, this, null, null,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
Bundle bnd = null;
try {
bnd = future.getResult();
final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
showMessage(((authtoken != null) ? "SUCCESS!\ntoken: " + authtoken : "FAIL"));
} catch (Exception e) {
e.printStackTrace();
showMessage(e.getMessage());
}
}
}
, null);
}
强制我的用户在应用程序开始时登录。我根据这里的教程实现了一个自定义验证器 由于您的身份验证方法是异步的,因此无法阻止UI显示。我将实现一个路由器/Splashscreen活动,该活动检查身份验证状态,然后启动登录活动或用户看到的实际活动(如果用户已登录)。确保在清单中将路由器活动设置为nohistory 如果您想将其保留在单个活动中,那么您的布局中应该有一个全屏加载指示器,该指示器位于UI顶部,一旦您确定要显示哪个布局,该指示器就会消失