فهرست منبع

[공통][New] 퍼미션 확인 유틸 추가 및 적용

hyodong.min 7 سال پیش
والد
کامیت
23402c284f

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -5,6 +5,7 @@
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
+  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
   <application
     android:name=".lifeplus.application.App"
@@ -19,7 +20,6 @@
       android:theme="@style/SplashTheme">
       <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
-
         <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
     </activity>

+ 27 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -3,7 +3,9 @@
  */
 package kr.co.zumo.app.lifeplus.activity;
 
+import android.Manifest;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.support.annotation.CallSuper;
 import android.support.annotation.NonNull;
@@ -20,6 +22,7 @@ import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.network.InternetStatus;
 import kr.co.zumo.app.lifeplus.network.NetworkReceiver;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+import kr.co.zumo.app.lifeplus.util.PermissionUtil;
 import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
@@ -52,6 +55,8 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
 
     ActionBarManager.getInstance().setActivityInfo(this);
     defineActionBar();
+
+    requestPermissions();
   }
 
   @CallSuper
@@ -159,6 +164,28 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
     disposable.clear();
   }
 
+  protected void requestPermissions() {
+    PermissionUtil.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 99);
+  }
+
+  @Override
+  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+    switch (requestCode) {
+      case 1001: {
+        // If request is cancelled, the result arrays are empty.
+        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+          // permission was granted, yay! Do the
+        }
+        else {
+          // permission denied, boo! Disable the
+        }
+        break;
+      }
+      default:
+        break;
+    }
+  }
+
   /***********************************
    * IView
    ***********************************/

+ 22 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/util/AppUtil.java

@@ -3,6 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.util;
 
+import android.content.Context;
+
 import kr.co.zumo.app.BuildConfig;
 
 /**
@@ -34,4 +36,24 @@ public class AppUtil {
   public static boolean isRelease() {
     return BuildConfig.DEBUG == false;
   }
+
+  /**
+   * UUID 가져오기
+   *
+   * @param context
+   * @return
+   */
+  public static String getDeviceUUID(Context context) {
+//    final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+//    final String tmDevice, tmSerial, androidId;
+//
+//    tmDevice = "" + tm.getDeviceId();
+//    tmSerial = "" + tm.getSimSerialNumber();
+//    androidId = "" + android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
+//    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
+//    String deviceId = deviceUuid.toString();
+    String deviceId = "UUID-fake";
+    return deviceId;
+  }
+
 }

+ 39 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/util/PermissionUtil.java

@@ -0,0 +1,39 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.util;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+
+/**
+ * PermissionUtil
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 9. 21.]   [최초 작성]
+ * @since 2018. 9. 21.
+ */
+public class PermissionUtil {
+
+  public static void requestPermissions(Activity activity, @NonNull String[] permissions, @NonNull int requestCode) {
+    ActivityCompat.requestPermissions(activity, permissions, requestCode);
+  }
+
+  public static void requestPermission(Activity activity, String permission, @NonNull int requestCode) {
+    if (ActivityCompat.checkSelfPermission(activity.getApplicationContext(), permission) != PackageManager.PERMISSION_GRANTED) {
+      if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
+        // 1 회 거부 후 다시 요청
+        ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode);
+      }
+      else {
+        // 처음 퍼미션 요청
+        ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode);
+      }
+    }
+  }
+}

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -61,7 +61,7 @@ public abstract class Presenter<M extends Model, V extends IView> implements INe
    */
   public void onCommand(Command command) {
     this.command = command;
-    Log.w("APP# Presenter | onCommand", "| command: " + new Gson().toJson(command));
+    Log.w("APP# Presenter | onCommand", "| command: " + command.getClass().getSimpleName() + ", " + new Gson().toJson(command));
     command.preExecute(model, view, this);
     command.execute(model, view, this);
     command.postExecute(model, view, this);