Commit 6bc8d530 by Kazuyuki Hida

課題5を修正

parent 58d6e72f
package jp.agentec.abook.abv.ui.common.activity;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.Context;
......@@ -78,6 +79,12 @@ public abstract class ABVNoAuthenticatedActivity extends ABVActivity {
protected void onStop() {
super.onStop();
ABVViewUnbindHelper.unbindReferences(getContentViewId());
AlertDialog dialog = AgreementToTermsHelper.getCurrentDialog();
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
LogoutHelper.logout(this, false);
}
}
protected abstract View getContentViewId();
......@@ -279,6 +286,8 @@ public abstract class ABVNoAuthenticatedActivity extends ABVActivity {
private void showMain() {
try {
ContractLogic contractLogic = AbstractLogic.getLogic(ContractLogic.class);
contractLogic.initializeContractServiceOption();
try {
final ABVDataCache dataCache = ABVDataCache.getInstance();
dataCache.refreshServiceOptions();
......@@ -437,23 +446,8 @@ public abstract class ABVNoAuthenticatedActivity extends ABVActivity {
AgreementToTermsHelper.AgreementListener listener = new AgreementToTermsHelper.AgreementListener() {
@Override
public void onDisabled() {
try {
// fixme とってつけたような処理なので、もう少しいい感じのタイミングで処理したい
ContractLogic contractLogic = AbstractLogic.getLogic(ContractLogic.class);
contractLogic.initializeContractServiceOption();
if (ABVDataCache.getInstance().serviceOption.isUsableAgreementToTerms()) {
// サービスオプションが無効としてスルーするという場合には、
// 前回ログインだけしている状態で終了してしまった時に
// サービスオプションが読み込まれていなかったというパターンがあるので、
// 改めて読み込み直して有効だったら、ログアウトする
LogoutHelper.logout(ABVNoAuthenticatedActivity.this);
} else {
onAgreed();
}
} catch (Exception e) {
Logger.e(TAG, e);
}
}
@Override
public void onEmpty() {
......
......@@ -48,6 +48,17 @@ public class AgreementToTermsHelper {
void onError(Exception e);
}
private static AlertDialog currentDialog = null;
private static synchronized void setCurrentDialog(AlertDialog dialog) {
currentDialog = dialog;
}
public static synchronized AlertDialog getCurrentDialog() {
return currentDialog;
}
/**
* 同意規約情報を読み込んで、バージョンが異なっていたら、ダイアログを表示
* バージョンが同じだったら何もしない
......@@ -122,6 +133,13 @@ public class AgreementToTermsHelper {
params.width = disp.getWidth() * 4 / 5;
}
dialog.getWindow().setAttributes(params);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
setCurrentDialog(null);
}
});
setCurrentDialog(dialog);
} catch (Exception e) {
listener.onError(e);
}
......
......@@ -27,6 +27,16 @@ public class LogoutHelper {
* @param activity 呼び出し元アクティビティ
*/
public static void logout(Activity activity) {
logout(activity, true);
}
/**
* ログアウトして、ログイン画面に遷移する
*
* @param activity 呼び出し元アクティビティ
* @param launchLogin trueならLoginActivityをstart
*/
public static void logout(Activity activity, boolean launchLogin) {
try {
// modify by Jang 2013.06.20
UserAuthenticateLogic user = AbstractLogic.getLogic(UserAuthenticateLogic.class);
......@@ -50,10 +60,11 @@ public class LogoutHelper {
SharedPreferences sharedPreferences = activity.getSharedPreferences(AppDefType.PrefName.USER_PREFERENCE, Context.MODE_PRIVATE);
sharedPreferences.edit().remove(AppDefType.UserPrefKey.GUEST_LOGIN).apply();
if (launchLogin) {
Intent intent = new Intent(activity, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
activity.startActivity(intent);
activity.finish();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment