java - Android "onRequestPermissionsResult"未被调用

标签 java android maps

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

相关文章:

swift - 如何在 Xcode 中向 Google Maps API 添加叠加层

java - Android Studio 需要 JDK 7 for Android-L mac

java - 覆盖 getColumnClass 不适用于日期列

android - 如何检查 MapView 上没有贴上 ItemizedOverlay?

java - 如何导航到 .java 文件而不是 .class 文件,其中在类路径中指定了源路径?

Java - 在 map 中用作键的数据类型

java - 如何在 Swift 中创建一个字典/ map ,其中日期作为键, boolean 值作为值?

java - Appengine 和 JPA - 读取刚刚写入的数据

java - android.permission.WRITE_SECURE_SETTINGS 错误

java - 检索项目 :No resource found that matches the given name 'Theme.AppCompat.Light' . 的父项时出错 MY R.java 丢失