react-native 0.59 如何在 android 上创建本机请求权限

react-native 0.59 how to create a native request permission on android

我是 react-native 的新手,我使用的是 0.59。 我需要为后台地理定位显示“始终允许”的位置请求权限。

它正在 API 28 上工作。但是,当迁移到 API 29 时,它不会出现。

根据android文档,您需要手动列出权限。

目前。我有以下内容。

AndroidManifest.xml

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

关于我的定制服务 /service/Geolocation.java


    @ReactMethod
    public void requestForLocationPermission(Promise promise) {
        String result = "";

        int permissionCheck = ContextCompat.checkSelfPermission(this.getReactApplicationContext(),
                Manifest.permission.ACCESS_BACKGROUND_LOCATION);
        
        
        if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
            promise.resolve("granted");
        } else {
            ActivityCompat.requestPermissions(
                this,
                new String[]{
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_BACKGROUND_LOCATION
                },
                MY_PERMISSIONS_REQUEST_LOCATION
            );
        }
    }

我有这个错误

如何在我的模块上扩展 MainActivity。 或者有什么可能的方法来获得许可。

谢谢

您可以将当前 activity 转换为 AppCompatActivity 以消除错误。因此,将 this 替换为 (AppCompatActivity) getCurrentActivity().

这对我有用

import android.app.Activity;

...

final Activity activity = getCurrentActivity();
            
ActivityCompat.requestPermissions(
    activity,
    new String[]{
        Manifest.permission.ACCESS_BACKGROUND_LOCATION,
        Manifest.permission.ACCESS_FINE_LOCATION
    },
    MY_PERMISSIONS_REQUEST_LOCATION
);