gpt4 book ai didi

android - 请求权限无限循环

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:05 25 4
gpt4 key购买 nike

我从 https://github.com/googlemaps/android-samples/tree/master/tutorials/CurrentPlaceDetailsOnMap 下载示例源代码.

由于两个函数之间的无限循环导致第一次运行时崩溃:

private void updateLocationUI() {
if (mMap == null) {
return;
}

/*
* Request location permission, so that we can get the location of the
* device. The result of the permission request is handled by a callback,
* onRequestPermissionsResult.
*/
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
} else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}

if (mLocationPermissionGranted) {
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
} else {
mMap.setMyLocationEnabled(false);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mLastKnownLocation = null;
}
}

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
mLocationPermissionGranted = false;
switch (requestCode) {
case PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
}
}
}
updateLocationUI();
}

然后在模拟器上运行它:api lvl25,Androd 7.1.1

日志:

03-22 23:34:18.249 24660-24660/com.example.mypc.mapdemo W/Activity: Can reqeust only one set of permissions at a time
03-22 23:34:19.759 24660-24660/com.example.mypc.mapdemo W/Activity: Can reqeust only one set of permissions at a time
03-22 23:34:20.501 24660-24660/com.example.mypc.mapdemo W/Activity: Can reqeust only one set of permissions at a time
03-22 23:34:20.894 24660-24660/com.example.mypc.mapdemo W/Activity: Can reqeust only one set of permissions at a time

崩溃日志:

E/AndroidRuntime:     at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:372)
at com.example.mypc.mapdemo.MainActivity.updateLocationUI(MainActivity.java:330)
at com.example.mypc.mapdemo.MainActivity.onRequestPermissionsResult(MainActivity.java:207)
at android.app.Activity.requestPermissions(Activity.java:4116)
at android.support.v4.app.ActivityCompatApi23.requestPermissions(ActivityCompatApi23.java:49)
at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:37
```2)

问题:我该如何解决?

最佳答案

if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
} else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
mLocationPermissionGranted = false;
switch (requestCode) {
case PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
updateLocationUI();
}else{
mLocationPermissionGranted = true;
mMap.setMyLocationEnabled(false);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mLastKnownLocation = null;
}
}
break;
}
}

关于android - 请求权限无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com