利用規約に同意する。ログイン画面修正と、ダイアログ表示。
Showing
| ... | ... | @@ -14,11 +14,23 @@ import android.view.animation.Animation; |
| import android.view.animation.Animation.AnimationListener; | ||
| import android.view.animation.TranslateAnimation; | ||
| import android.view.inputmethod.InputMethodManager; | ||
| import android.widget.Button; | ||
| import android.widget.CheckBox; | ||
| import android.widget.EditText; | ||
| import android.widget.ImageButton; | ||
| import android.widget.TextView; | ||
| import android.widget.Toast; | ||
| import org.json.adf.JSONObject; | ||
| import java.io.BufferedReader; | ||
| import java.io.IOException; | ||
| import java.io.InputStream; | ||
| import java.io.InputStreamReader; | ||
| import java.net.HttpURLConnection; | ||
| import java.net.URL; | ||
| import java.util.Locale; | ||
| import jp.agentec.abook.abv.bl.acms.client.json.CmsUrlJSON; | ||
| import jp.agentec.abook.abv.bl.acms.type.DeleteDataType; | ||
| import jp.agentec.abook.abv.bl.acms.type.LoginMode; | ||
| ... | ... | @@ -53,12 +65,16 @@ import jp.agentec.abook.abv.cl.environment.DeviceInfo; |
| import jp.agentec.abook.abv.cl.util.PreferenceUtil; | ||
| import jp.agentec.abook.abv.launcher.android.R; | ||
| import jp.agentec.abook.abv.ui.common.activity.ABVLoginActivity; | ||
| import jp.agentec.abook.abv.ui.common.appinfo.AppDefType; | ||
| import jp.agentec.abook.abv.ui.common.appinfo.AppDefType.UserPrefKey; | ||
| import jp.agentec.abook.abv.ui.common.constant.ErrorCode; | ||
| import jp.agentec.abook.abv.ui.common.constant.ErrorMessage; | ||
| import jp.agentec.abook.abv.ui.common.dialog.ABookAlertDialog; | ||
| import jp.agentec.abook.abv.ui.common.helper.ABVViewUnbindHelper; | ||
| import jp.agentec.abook.abv.ui.common.util.AlertDialogUtil; | ||
| import jp.agentec.adf.net.http.HttpRequestSender; | ||
| import jp.agentec.adf.net.http.HttpResponse; | ||
| import jp.agentec.adf.util.NumericUtil; | ||
| import jp.agentec.adf.util.StringUtil; | ||
| /** | ||
| ... | ... | @@ -94,6 +110,12 @@ public class LoginActivity extends ABVLoginActivity { |
| private InputMethodManager imm; | ||
| private Button btnLoginOff; | ||
| private Button btnLoginOn; | ||
| private CheckBox chexBoxAgree; | ||
| private String detail_text = ""; | ||
|
||
| private static String agreementUrl = ABVEnvironment.getInstance().agree_to_terms_of_use_url; | ||
| @Override | ||
| public void onCreate(Bundle savedInstanceState) { | ||
| Logger.i(TAG, "onCreate"); | ||
| ... | ... | @@ -148,12 +170,40 @@ public class LoginActivity extends ABVLoginActivity { |
| } | ||
| }); | ||
| findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() { | ||
| // ログインボタン(最初はGONEにして見せない) | ||
| btnLoginOn = findViewById(R.id.btn_login_on); | ||
| btnLoginOn.setOnClickListener(new View.OnClickListener() { | ||
| @Override | ||
| public void onClick(View v) { | ||
| public void onClick(View v) { | ||
| tryLogin(); | ||
| } | ||
| }); | ||
| btnLoginOff = findViewById(R.id.btn_login_off); | ||
| btnLoginOff.setVisibility(View.VISIBLE); | ||
| // チェックボックス | ||
| chexBoxAgree = findViewById(R.id.check_box_agree); | ||
| // 初期化(状態は保存しておく。ログアウトした後に使う) | ||
| boolean agree = PreferenceUtil.getUserPref(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, false); | ||
| if (agree) { | ||
| btnLoginOn.setVisibility(View.VISIBLE); | ||
| btnLoginOff.setVisibility(View.GONE); | ||
| chexBoxAgree.setChecked(true); | ||
| } | ||
| chexBoxAgree.setOnClickListener(new View.OnClickListener() { | ||
| @Override | ||
| public void onClick(View view) { | ||
| if (chexBoxAgree.isChecked()) { | ||
| btnLoginOn.setVisibility(View.VISIBLE); | ||
| btnLoginOff.setVisibility(View.GONE); | ||
| PreferenceUtil.putUserPref(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, true); | ||
| } else { | ||
| btnLoginOn.setVisibility(View.GONE); | ||
| btnLoginOff.setVisibility(View.VISIBLE); | ||
| PreferenceUtil.putUserPref(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, false); | ||
| } | ||
| } | ||
| }); | ||
| //androidバジョン6以上からMAC idではなくandroid固有numberを取得ため、ダイアログで表示 | ||
| if (android.os.Build.VERSION.SDK_INT >= 23) { | ||
| ... | ... | @@ -193,6 +243,89 @@ public class LoginActivity extends ABVLoginActivity { |
| ErrorMessage.showErrorMessageDialog(this, R.string.app_name, ErrorCode.L110); | ||
| } | ||
| } | ||
| // 詳細ボタン | ||
| Button btnDetail = findViewById(R.id.detail); | ||
| btnDetail.setOnClickListener(new View.OnClickListener() { | ||
| @Override | ||
| public void onClick(View view) { | ||
| CommonExecutor.execute(new Runnable() { | ||
| @Override | ||
| public void run() { | ||
| // CMSより文言を取得し、ダイアログで表示する。 | ||
| detail_text = getAgreementText(); | ||
| runOnUiThread(new Runnable() { | ||
| @Override | ||
| public void run() { | ||
| final ABookAlertDialog messageDialog = AlertDialogUtil.createAlertDialog(LoginActivity.this, R.string.error); | ||
| if (detail_text != null) { | ||
| JSONObject detail_json = new JSONObject(detail_text); | ||
| Locale locale = Locale.getDefault(); | ||
| if (locale.getLanguage().equals("ja")) { | ||
| messageDialog.setMessage(detail_json.getString("ja")); | ||
| } else if (locale.getLanguage().equals("ko")) { | ||
| messageDialog.setMessage(detail_json.getString("ko")); | ||
| } else { | ||
| messageDialog.setMessage(detail_json.getString("en")); | ||
| } | ||
| } else { | ||
| messageDialog.setMessage(R.string.NETWORK); | ||
| } | ||
| messageDialog.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { | ||
| @Override | ||
| public void onClick(DialogInterface dialog, int which) { | ||
| dialog.dismiss(); | ||
| } | ||
| }); | ||
| messageDialog.show(); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 利用規約の詳細文を取得する | ||
| * @return 取得した文字列(失敗したらnullが返る) | ||
| */ | ||
| private String getAgreementText() { | ||
| HttpResponse response = new HttpResponse(); | ||
| HttpURLConnection conn = null; | ||
| try { | ||
| java.net.URL url = new URL(agreementUrl); | ||
| Logger.d(TAG, "url=" + url); | ||
| conn = HttpRequestSender.openConnection("GET", url, "UTF-8", null, null, 5000); | ||
| Logger.i(TAG,"responseCode : " + conn.getResponseCode()); | ||
| response.httpResponseCode = conn.getResponseCode(); | ||
| if (response.httpResponseCode != 200) { | ||
| return null; | ||
| } | ||
| response.httpResponseMessage = conn.getResponseMessage(); | ||
| response.contentLength = NumericUtil.parseLong(conn.getHeaderField("Content-Length"), 0); | ||
| InputStream inputStream = conn.getInputStream(); | ||
| BufferedReader bufferReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); | ||
| String resultJson = new String(); | ||
| String str; | ||
| while ( null != ( str = bufferReader.readLine() ) ) { | ||
| resultJson = resultJson + str; | ||
| } | ||
| bufferReader.close(); | ||
| Logger.i(TAG,"response JSON : " + resultJson); | ||
| return resultJson; | ||
| } catch (IOException e) { | ||
| Logger.e(e.getMessage()); | ||
| } catch (NumberFormatException e) { | ||
| Logger.e(e.getMessage()); | ||
| } finally { | ||
| if (conn != null) { | ||
| conn.disconnect(); | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| @Override | ||
| ... | ... | @@ -362,6 +495,10 @@ public class LoginActivity extends ABVLoginActivity { |
| return false; | ||
| } | ||
| } | ||
| if (!chexBoxAgree.isChecked()) { | ||
| handleErrorMessageToast(ErrorCode.E132); | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| ... | ... | |