Android:我的位置按钮在 Android 6.0 上不起作用
Android: My location button doesn't work on Android 6.0
在其他机器人中一切正常,但在 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 中),但我想不通。
请参考这些 link 并在运行时添加权限。
https://blog.xamarin.com/requesting-runtime-permissions-in-android-
棉花糖/
或者试试这些
创建verifyStoragePermissions()方法并在onCreateView()中调用
共 Activity
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
);
}
在其他机器人中一切正常,但在 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 中),但我想不通。
请参考这些 link 并在运行时添加权限。
https://blog.xamarin.com/requesting-runtime-permissions-in-android- 棉花糖/
或者试试这些
创建verifyStoragePermissions()方法并在onCreateView()中调用 共 Activity
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
);
}