如何在React Native中通过地理位置获取位置权限

问题描述 投票:0回答:1

我想在我的应用程序中渲染我的纬度和经度。

我使用了地理定位,但没有得到正确的回应

这是 GeoLocationAPI.js

import { StyleSheet, Text, View, TouchableOpacity, PermissionsAndroid, Platform } from 'react-native';
import Geolocation from '@react-native-community/geolocation';

const GeoLocationAPI = () => {
    const [latitude, setLatitude] = useState(null);
    const [longitude, setLongitude] = useState(null);

    // 위치 권한 요청 함수
    const requestLocationPermission = async () => {
        try {
            if (Platform.OS === 'android') {
                const granted = await PermissionsAndroid.request(
                    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
                    {
                        title: 'Location Permission',
                        message: 'This app needs to access your location.',
                        buttonPositive: 'OK',
                    },
                );
                if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                    // 권한 허용되면 위치 정보 가져오기
                    geoLocation();
                } else {
                    console.log('Location permission denied.');
                }
            } else {
                // iOS에서는 이미 Info.plist에 권한을 설정했으므로 따로 처리할 필요 없음
                geoLocation();
            }
        } catch (err) {
            console.warn(err);
        }
    };

    // 위치 정보 가져오기 함수
    const geoLocation = () => {
        Geolocation.getCurrentPosition(
            position => {
                const { latitude, longitude } = position.coords;
                setLatitude(latitude);
                setLongitude(longitude);
            },
            error => {
                console.log(error.code, error.message);
            },
            { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 },
        );
    };

    return (
        <View style={styles.container}>
            <Text>Latitude: {latitude}</Text>
            <Text>Longitude: {longitude}</Text>
            <TouchableOpacity onPress={requestLocationPermission}>
                <Text style={styles.buttonText}>Get GeoLocation</Text>
            </TouchableOpacity>
        </View>
    );
};

const styles = StyleSheet.create({
    container: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
    },
    buttonText: {
        fontSize: 20,
        marginTop: 20,
        color: 'blue',
    },
});

export default GeoLocationAPI;

但是结果是这样的。

“位置权限被拒绝。”

我尝试添加console.log(已授予)

但是结果是这样的。

enter image description here

我尝试添加

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

在我的 AndroidManifest.xml 中

package.json 是 enter image description here

我的 build.gradle 是 enter image description here

react-native
1个回答
0
投票

确保您已配置此项,如果没有,请将其添加到您的“AndroidManifest.xml”文件中。

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

© www.soinside.com 2019 - 2024. All rights reserved.