diff --git a/app/src/main/java/com/nsgk/ruralWeb/EnvWindowObject.java b/app/src/main/java/com/nsgk/ruralWeb/EnvWindowObject.java index ce6cdbb..ba8d7a1 100644 --- a/app/src/main/java/com/nsgk/ruralWeb/EnvWindowObject.java +++ b/app/src/main/java/com/nsgk/ruralWeb/EnvWindowObject.java @@ -68,8 +68,18 @@ public class EnvWindowObject { if(ActivityCompat.checkSelfPermission(m_context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(m_context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - Toast.makeText(m_context, "请先允许定位服务", Toast.LENGTH_LONG).show(); - ContextUtils.RequestLocationPermission((Activity) m_context, 0x1001); + Activity activity = (Activity) m_context; + + if (activity.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION) && activity.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)) // do not ask + { + Toast.makeText(m_context, "请先允许定位服务", Toast.LENGTH_LONG).show(); + ContextUtils.RequestLocationPermission(activity, FullscreenActivity.PERMISSION_LOCATION_REQUEST_CODE); + } + else + { + activity.requestPermissions(new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, FullscreenActivity.PERMISSION_LOCATION_REQUEST_CODE); + } + return lastLocation; } diff --git a/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java b/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java index 38beb1f..ff2a1ea 100644 --- a/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java +++ b/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java @@ -2,6 +2,7 @@ package com.nsgk.ruralWeb; import android.annotation.SuppressLint; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; import android.util.Log; @@ -10,10 +11,13 @@ import android.view.ViewGroup; import android.webkit.WebView; import android.widget.LinearLayout; import android.widget.RelativeLayout; +import android.widget.Toast; import com.just.agentweb.AgentWeb; import com.just.agentweb.DefaultWebClient; +import com.nsgk.ruralWeb.utils.ContextUtils; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -23,6 +27,7 @@ import androidx.appcompat.app.AppCompatActivity; * status bar and navigation/system bar) with user interaction. */ public class FullscreenActivity extends AppCompatActivity { + public static final int PERMISSION_LOCATION_REQUEST_CODE = 0x1001; private AgentWeb mAgentWeb; @@ -118,6 +123,25 @@ public class FullscreenActivity extends AppCompatActivity { super.onActivityResult(requestCode, resultCode, data); } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == PERMISSION_LOCATION_REQUEST_CODE) { + int granted = 0; + for(int i = 0; i < permissions.length; i++) + { + boolean b = grantResults[i] == PackageManager.PERMISSION_GRANTED; + Log.i("NSGK", String.format("请求权限: %s -> %s", permissions[i], b ? "通过" : "拒绝")); + if(b) + granted++; + } + if (granted < permissions.length) { + Toast.makeText(this, "需要定位权限", Toast.LENGTH_LONG).show(); + ContextUtils.RequestLocationPermission(this, FullscreenActivity.PERMISSION_LOCATION_REQUEST_CODE); + } + } + } + private Preference GetPreference() { if(null == preference)