Я беру этот курс Flutter / Dart на Udemy, и в начале нового проекта я застрял, пытаясь использовать Geolocater Package . Первоначальный проект github для этого расположен здесь .
Первым шагом в курсе является импорт пакета Geolocator, добавление его в pubspe c .yml, а затем в _LoadingScreenState в screen / loading_screen.dart файл, вы должны добавить функцию:
void getLocation() async {
Position position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
print(position);
}
И, наконец, вы просто добавляете getLocation (); к onPressed на той же странице. В руководстве это работает нормально, так как они используют API 26 и версию 3.0.1 Geolocator. Однако я использую API 29 или 30 (ни один из них не работает) и получаю следующую ошибку:
W / ppbrewery.clim (25370): доступ к скрытому методу Landroid / content / Context; -> getFeatureId () Ljava / lang / String; (серый список, отражение, разрешено)
Я немного изучил проблему и, похоже, делает это, потому что я использую API 30. Однако я понятия не имею, что с этим делать или как заставить его распечатать мое местоположение.
См. некоторую документацию:
https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces
Внизу написано: Как я могу разрешить доступ к не-SDK интерфейсам?
Но в настройках оболочки adb поставить глобальную команду hidden_api_policy 1 ничего не делает для меня. Это могло быть потому, что я использую API 30, но я просто не знаю. Кроме того, похоже, что он ничего не делает с API 29.
Кроме того, вышеупомянутое решение, похоже, направлено только на исправление его на устройстве / эмуляторе разработчика, если я не понимаю его. Как исправить как для эмулятора, так и в будущем для фактического развертывания?