gpt4 book ai didi

java - Android "onRequestPermissionsResult"未被调用

转载 作者:行者123 更新时间:2023-11-30 10:39:26 25 4
gpt4 key购买 nike

我正在尝试实现 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/

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