diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java index 5998a82b72..903e1240bb 100755 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.utilcode.util; +import static android.Manifest.permission.ACCESS_FINE_LOCATION; + import android.Manifest; import android.annotation.TargetApi; import android.app.Activity; @@ -25,6 +27,7 @@ import java.util.Set; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.mogo.eagle.core.utilcode.constant.PermissionConstants; @@ -156,7 +159,7 @@ public final class PermissionUtils { public static void requestAccessFineLocation(final SimpleCallback callback) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) { + if (isGranted(ACCESS_FINE_LOCATION)) { if (callback != null) { callback.onGranted(); } @@ -499,7 +502,10 @@ public final class PermissionUtils { } else if (type == TYPE_DRAW_OVERLAYS) { currentRequestCode = TYPE_DRAW_OVERLAYS; startOverlayPermissionActivity(activity, TYPE_DRAW_OVERLAYS); - } else { + } else if (type == TYPE_ACCESS_FINE_LOCATION) { + currentRequestCode = TYPE_ACCESS_FINE_LOCATION; + ActivityCompat.requestPermissions(activity, new String[] { ACCESS_FINE_LOCATION }, currentRequestCode); + } else { activity.finish(); Log.e("PermissionUtils", "type is wrong."); } @@ -523,8 +529,23 @@ public final class PermissionUtils { @NonNull String[] permissions, @NonNull int[] grantResults) { activity.finish(); - if (sInstance != null && sInstance.mPermissionsRequest != null) { - sInstance.onRequestPermissionsResult(activity); + if (requestCode == TYPE_ACCESS_FINE_LOCATION) { + for (int result : grantResults) { + if (result == PackageManager.PERMISSION_GRANTED) { + if (sSimpleCallback4AccessFineLocation != null) { + sSimpleCallback4AccessFineLocation.onGranted(); + } + } + if (result == PackageManager.PERMISSION_DENIED) { + if (sSimpleCallback4AccessFineLocation != null) { + sSimpleCallback4AccessFineLocation.onDenied(); + } + } + } + } else { + if (sInstance != null && sInstance.mPermissionsRequest != null) { + sInstance.onRequestPermissionsResult(activity); + } } } @@ -570,7 +591,7 @@ public final class PermissionUtils { if (sSimpleCallback4AccessFineLocation == null) { return; } - if (isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) { + if (isGranted(ACCESS_FINE_LOCATION)) { sSimpleCallback4AccessFineLocation.onGranted(); } else { sSimpleCallback4AccessFineLocation.onDenied();