瀏覽代碼

1. MainActivity.java
- 배터리 사용량 최적화 모드 체크 로직 및 해당 모드 해제 로직 추가
- versionCheck '<' 를 '<=' 로 수정

2. strings.xml, Manifest.xml
- 배터리 사용량 최적화 모드 체크 로직 추가에 따른 Message 및 Manifest 추가

3. build.gradle
- App Version / Code = 18

jeongminRyu 4 年之前
父節點
當前提交
a40528ce6d

+ 35 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="BintrayJCenter" />
+      <option name="name" value="BintrayJCenter" />
+      <option name="url" value="https://jcenter.bintray.com/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven" />
+      <option name="name" value="maven" />
+      <option name="url" value="https://jitpack.io" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="Google" />
+      <option name="name" value="Google" />
+      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven2" />
+      <option name="name" value="maven2" />
+      <option name="url" value="https://oss.sonatype.org/content/repositories/ksoap2-android-releases/" />
+    </remote-repository>
+  </component>
+</project>

+ 4 - 3
app/build.gradle

@@ -8,8 +8,8 @@ android {
         applicationId "com.dbs.mplus.knuh"
         minSdkVersion 24
         targetSdkVersion 28
-        versionCode 17
-        versionName "1.1.0.17"
+        versionCode 18
+        versionName "1.1.0.18"
         multiDexEnabled true
 //        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
@@ -62,7 +62,8 @@ android {
             applicationId "com.dbs.mplus.knuh"
             applicationIdSuffix ".local"
             buildConfigField "String", "originalPackageName", "\"com.dbs.mplus.knuh\""
-            buildConfigField "String", "CONSENT_SERVER_URL", "\"http://128.127.95.125/\""
+//            buildConfigField "String", "CONSENT_SERVER_URL", "\"http://128.127.95.125/\""
+            buildConfigField "String", "CONSENT_SERVER_URL", "\"http://172.16.1.21:8091/\""
             buildConfigField "String", "CONSENT_EFORM_SERVER_URL", "\"https://emadev.knuh.kr:8095/eformservice.aspx\""
             buildConfigField "String", "INST_CD", "\"031\""
             manifestPlaceholders = [appLabel: "로컬교육"]

+ 3 - 0
app/src/main/AndroidManifest.xml

@@ -11,6 +11,9 @@
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+<!--    <uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> &lt;!&ndash; 배터리 최적화 화이트리스트 추가를 위한 퍼미션 &ndash;&gt;-->
+    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> <!-- 배터리 최적화 화이트리스트 추가를 위한 퍼미션 -->
+
 
     <permission
         android:name="android.permission.NETWORK_SETTINGS"

+ 60 - 6
app/src/main/java/com/dbs/mplus/knuh/MainActivity.java

@@ -1,21 +1,23 @@
 package com.dbs.mplus.knuh;
 
+import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.Manifest;
 import android.content.Context;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.View;
-import android.widget.Toast;
 
 import com.dbs.mplus.knuh.activity.LoginActivity;
 import com.dbs.mplus.knuh.customView.CustomAlertDialog;
 import com.dbs.mplus.knuh.httpTask.CallBack;
 import com.dbs.mplus.knuh.httpTask.HttpRunnable;
-import com.dbs.mplus.knuh.httpTask.HttpSoapConnection;
 import com.dbs.mplus.knuh.util.ConsentConfig;
 import com.dbs.mplus.knuh.util.Util;
 import com.gun0912.tedpermission.PermissionListener;
@@ -23,7 +25,6 @@ import com.gun0912.tedpermission.TedPermission;
 
 import org.ksoap2.serialization.SoapObject;
 
-import java.net.HttpCookie;
 import java.util.ArrayList;
 import java.util.HashMap;
 
@@ -108,7 +109,7 @@ public class MainActivity extends AppCompatActivity {
 
               int version = Integer.parseInt(ConsentConfig.SETTING_DATA.get("MOBILE_VERSION"));
               int appVersion = BuildConfig.VERSION_CODE;
-              if (version == appVersion) {
+              if (version <= appVersion) {
                 permissionCheck();
               } else {
                 runOnUiThread(new Runnable() {
@@ -174,7 +175,8 @@ public class MainActivity extends AppCompatActivity {
     PermissionListener permissionListener = new PermissionListener() {
       @Override
       public void onPermissionGranted() {
-        nextActivity();
+//        nextActivity();
+        whiteListCheck();
       }
 
       @Override
@@ -186,10 +188,62 @@ public class MainActivity extends AppCompatActivity {
         .setPermissionListener(permissionListener)
         .setRationaleMessage(getString(R.string.permissionCheck))
         .setDeniedMessage(getString(R.string.permissionDenied))
-        .setPermissions(android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE)
+        .setPermissions(
+                android.Manifest.permission.READ_EXTERNAL_STORAGE,
+                android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                android.Manifest.permission.ACCESS_FINE_LOCATION,
+                Manifest.permission.READ_PHONE_STATE
+        )
         .check();
   }
 
+  /**
+   * 앱 배터리 사용량 최적화 모드 체크
+   * 최적화 모드 중지될 때 까지 무한루프
+   * 2020.11.17
+   * jmRyu
+   * Start
+   */
+  private void whiteListCheck() {
+    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+    // 패키지 명으로 최적화 모드 사용 여부 체크 ( 최적화 모드 사용 상태 = false, 최적화 모드 중지 상태 = true )
+    boolean isPowered = powerManager.isIgnoringBatteryOptimizations(mContext.getPackageName());
+    if (isPowered) {
+      nextActivity();
+    } else {
+      setWhiteList();
+    }
+  }
+
+  /**
+   * 배터리 사용량 최적화 중지 System Setting Alert 호출
+   */
+  private void setWhiteList() {
+    csAlert.show();
+    csAlert.setContent(mContext.getString(R.string.whiteList), ConsentConfig.ALERT_BTN_TYPE);
+    csAlert.btnConfirm2.setOnClickListener(new View.OnClickListener() {
+      @Override
+      public void onClick(View v) {
+        csAlert.dismiss();
+        Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
+        intent.setData(Uri.parse("package:" + mContext.getPackageName()));
+        startActivityForResult(intent, 0);
+      }
+    });
+  }
+
+  /**
+   * line 234: startActivityForResult
+   * System Setting Alert 에서 result 를 받았을때 다시 체크로직 수행
+   */
+  @Override
+  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+    super.onActivityResult(requestCode, resultCode, data);
+
+    if (requestCode == 0) {
+      whiteListCheck();
+    }
+  }
 
   private void nextActivity() {
     new Handler().postDelayed(new Runnable() {

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -166,5 +166,7 @@
     <string name="ERROR_001">뷰어를 설치해주세요.</string>
     <string name="ERROR_002">뷰어 버전 정보가 일치하지 않습니다 앱 업데이트가 필요합니다.</string>
     <string name="ERROR_006">뷰어 실행 권한이 불충분합니다 </string>
+    
+    <string name="whiteList">동의서 저장을 위해서 \"배터리 사용량 최적화 중지\" 허용이 필요합니다.</string>
 
 </resources>