ユーザーがサービスにログインしたかどうかを確認する主なアクティビティがあります。ユーザーがログインしていない場合、新しいアクティビティが開きます。
if (userName == null) {
Intent myIntent = new Intent(MainActivity.this, Login.class);
MainActivity.this.startActivity(myIntent);
}
このアクティビティには、ユーザー名とパスワードのフィールドとログイン ボタンがあります。ユーザーはそこに情報を入力し、[ログイン] をクリックします。私はネットワークをすべて新しいスレッドで行います:
new Thread( new Runnable() {
public void run() {
try {
Auth myAuth = new Auth(getApplicationContext());
Boolean isAuth = false;
isAuth=myAuth.getAuthToken(tUserName.getText().toString(), tPassword.getText().toString());
Bundle b = new Bundle();
b.putBoolean("isAuth", isAuth);
Message msg = new Message();
msg.setData(b);
loginHandler.dispatchMessage(msg);
}
catch (InterruptedException ex) { ex.printStackTrace(); }
catch (Exception ex) { ex.printStackTrace();}
finally { } }
}).start();
これにより、メッセージがハンドラーにポストされます。
private static Handler loginHandler = new Handler () {
@Override
public void handleMessage(Message msg) {
mProgress.setVisibility(View.GONE);
if(msg.getData().getBoolean("isAuth")){
// UNABLE TO CALL FINISH
}
else
{
CharSequence msg2 = "Login Failed";
Toast.makeText(context, msg2, Toast.LENGTH_SHORT).show();
}
}
};
isAuth が true の場合、ログイン アクティビティを自動的に閉じたい。
ログイン画面を実装するという私の計画は、間違った方向に進んでいる可能性があります。私に知らせてください。あなたが提案する別の方法を調べます。