我正在尝试实现 Marshmallow 的权限支持,但我的“onRequestPermissionsResult”内的代码从未被调用。代码的“onCreate”和“onMapReady”部分工作正常。检查设备是否有权限并请求权限工作正常。
我使用的是运行 Android Marshmallow 6.0、API 23 的 Nexus 5X 模拟器。
我已尝试执行此处提到的操作 -> Android M Permissions: onRequestPermissionsResult() not being called
但是我无法让它工作,无论我使用“ActivityCompat.requestPermissions”还是直接“requestPermissions”,它都不会被调用。
我还将我的 appcompat 和支持库更新到了 v24.2.0
有什么想法吗?
这是我的 Activity :
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
UiSettings mapSettings;
int MY_LOCATION_REQUEST_CODE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
//Check location permission for sdk >= 23
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
// Request permission.
ActivityCompat.requestPermissions(MapsActivity.this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_LOCATION_REQUEST_CODE);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_LOCATION_REQUEST_CODE) {
if (permissions.length == 1 &&
permissions[0] == android.Manifest.permission.ACCESS_FINE_LOCATION &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
// Permission was denied. Display an error message.
}
}
}
}
最佳答案
MY_LOCATION_REQUEST_CODE
应该是非负常量。
您应该将其声明为
private static final int MY_LOCATION_REQUEST_CODE = 1;
关于java - Android "onRequestPermissionsResult"未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298129/