Доступ к прекрасному местоположению не работает
следующее мое AndroidManifest.xml
...
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="22" />
<application
android:name=".BeaconApp"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyBqhOHH31FYObdzoVW9TmQsv62TOP0LSLI"/>
</application>
как вы можете видеть, я добавил соответствующие разрешения, необходимые для получения информации о местоположении. Однако, когда я запускаю свое приложение, я получаю странную ошибку...
Looks like the app doesn't have permission to access location.
Add the following line to your app's AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
throwLocationPermissionMissing
...etc
Я уже добавил Это в мой AndroidManifest.xml
Итак, почему я получаю эту ошибку. Я попытался перезапустить Android Studio. Я попытался стереть данные из эмулятора. Я попробовал Gradle - > Clean. Ничего из этого не помогло. Что здесь происходит?
это возможно, что мой эмулятор android блокирует GPS или что-то еще?
3 ответов
вы пробовали спрашивать разрешения во время выполнения..
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.ACCESS_FINE_LOCATION);
if(permissionCheck != PackageManager.PERMISSION_GRANTED) {
// ask permissions here using below code
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_CODE);
}
вы можете проверить детали на сайте запрос разрешений во время выполнения
таким образом вы просите пользователя предоставить разрешение во время выполнения После android 6.0
вы можете проверить Android 6.0 Ошибка Разрешения ответ.
надеюсь, это поможет вам.
вам нужно разрешение среды выполнения. технически говоря, начиная с os 6, разрешение манифеста ничего не значит.
google "Android runtime gps разрешение", и вы получите тонны ответов о том, что делать и почему.
С React-Native вы должны использовать PermissionsAndroid чтобы получить разрешения на Android 6.0 (или более поздней версии) устройств..
добавьте эти строки в свои файлы
import { PermissionsAndroid } from 'react-native';
async function requestLocationPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Location Permission',
'message': 'This app needs access to your location',
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location")
} else {
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}
затем вызов requestLocationPermission()
перед использованием местности