【发布时间】:2019-08-19 20:01:37
【问题描述】:
我尝试通过 Flutter 应用请求使用位置数据的权限。我正在使用geolocator 插件和permission_handler。两者都添加到我的pubspec.yaml。
我已经添加了
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
致我的android/app/src/main/AndroidManifest.xml。
当我启动我的应用程序时,我做的第一件事是
PermissionHandler().requestPermissions([PermissionGroup.location]).then((val) {
...
});
如果我随后在模拟器或物理手机上运行它,它会返回一个PermissionStatus.unknown,随后对GeoLocator() 的调用会向控制台发送垃圾邮件
No permissions found in manifest for: $permission
如果我进入应用程序设置,它会说没有请求特殊权限。
当我打开与 Android 项目完全相同的项目时(我同时使用 Android Studio,有一个简洁的下拉选项可以在 Android Studio 中打开 Android 项目)并在我的手机上运行它,它按预期工作 -它要求获得许可,如果我进入应用设置,我还可以在那里看到请求的许可。
有人知道为什么它不会随着颤动而“传播”吗?
【问题讨论】:
-
我认为在 android 文件夹结构中的颤振项目中,还有另一个 Manifest.xml,它会被复制并覆盖另一个 - 基本上不会更改实际 android 项目中的任何内容,因为它在颤振构建时被覆盖
-
你是如何运行flutter项目的,
flutter run? -
@jonathanHeindl 我可以在
android/app/src/debug/、android/app/src/profile和android/app/src/main中找到一个。我已经尝试了所有三个都没有运气。我缺一个吗? @TruongSinh 尝试了命令行和 Android Studio 的运行按钮。 -
您是否尝试过更改其他内容(仅仅是清单权限没有更新还是其他的也一样?)
-
@jonathanHeindl 我只是尝试更改
android:label,但它也没有反映在模拟器中。我看起来整个 AndroidManifest 都没有更新。