feat(gpsrelaysentinel): 升级为始终允许GPS监听权限申请
- 添加ACCESS_BACKGROUND_LOCATION权限声明 - 在Android Q及以上版本申请后台位置权限 - 权限检查包含后台位置权限验证 - 权限申请时根据系统版本动态添加后台位置权限
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|||||||
@@ -55,16 +55,29 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasLocationPermission() {
|
private boolean hasLocationPermission() {
|
||||||
return checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
boolean hasBasic = checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
||||||
|| checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
|
|| checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
|
||||||
|
if (hasBasic && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||||
|
return checkSelfPermission(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED;
|
||||||
|
}
|
||||||
|
return hasBasic;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestLocationPermission() {
|
private void requestLocationPermission() {
|
||||||
String[] permissions = new String[] {
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||||
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
String[] permissions = new String[] {
|
||||||
android.Manifest.permission.ACCESS_COARSE_LOCATION
|
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
};
|
android.Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||||
requestPermissions(permissions, REQUEST_LOCATION_PERMISSION);
|
android.Manifest.permission.ACCESS_BACKGROUND_LOCATION
|
||||||
|
};
|
||||||
|
requestPermissions(permissions, REQUEST_LOCATION_PERMISSION);
|
||||||
|
} else {
|
||||||
|
String[] permissions = new String[] {
|
||||||
|
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
|
android.Manifest.permission.ACCESS_COARSE_LOCATION
|
||||||
|
};
|
||||||
|
requestPermissions(permissions, REQUEST_LOCATION_PERMISSION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startService() {
|
private void startService() {
|
||||||
|
|||||||
Reference in New Issue
Block a user