Android MAPAPIv2:无权限
这里是我的Android MAPAPIv2:无权限,android,google-maps,Android,Google Maps,这里是我的清单代码片段: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> @Over
清单
代码片段:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
setInfoWindowAdapter();
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
this.googleMap.setMyLocationEnabled(true);
} else {
Toast.makeText(getActivity(), getString(R.string.no_permissions), Toast.LENGTH_LONG).show();
}
}
当我开始在一个安卓4.3的地图工作良好。但是如果我从Android 6.0开始,我会收到一条消息(Toast)`没有权限如果你在Android 6+上测试你的应用程序,你的代码工作正常。您需要从Android 6+上的用户获得运行时权限。以下是您如何做到这一点:
int permissionCheck = ContextCompat.checkSelfPermission(MapActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MapActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
} else {
//permission is already granted
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//granted
} else {
//not granted
}
} else {
//not granted
}
}
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
首先:尝试使用此命令请求权限:
boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
if(permissionGranted) {
// {Some Code}
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200);
}
第二个:OnRequestPermissionsResultCallback的实现
...implements ActivityCompat.OnRequestPermissionsResultCallback {
Third:覆盖onRequestPermissionsResult
方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 200: {
if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// {Some Code}
}
}
}
}
您是否添加了OnRequestPermissionsResult我想您需要运行时权限如何才能做到这一点?