一切在其他android上都可以正常运行,但是在6.0中,MyLocationButton不会执行任何操作。这是我的代码
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.setMyLocationEnabled(true);
googleMap
.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
Location location = googleMap.getMyLocation();
if (location == null) {
checkLocationSettings();
return true;
}
LatLng locationLatLng = new LatLng(location
.getLatitude(), location.getLongitude());
setMarkerToMap(locationLatLng );
//other staff
return false;
});
protected void checkLocationSettings() {
PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi
.checkLocationSettings(mGoogleApiClient,
mLocationSettingsRequest);
result.setResultCallback(this);
}
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
status.startResolutionForResult(this, REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException e) {
}
break;
}
}
什么会导致此问题?我猜想它必须做一些新的权限(在Android 6.0中),但是我无法弄清楚。
请参考这些链接并添加运行时权限。
https://blog.xamarin.com/requesting-runtime-permissions-in-android-棉花糖/
或尝试这些
创建verifyStoragePermissions()方法并在Activity的onCreateView()中调用
private static String[] PERMISSIONS_STORAGE = {
Manifest.Permission.AccessCoarseLocation,
Manifest.Permission.AccessFineLocation};
public static void verifyStoragePermissions(Activity activity)
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.AccessCoarseLocation);
if (permission != PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
1001 // pass any request code
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句