使用flutter启动时不会传播权限请求,而直接使用android启动时会传播

ged*_*agt 4 android flutter

我尝试请求权限以在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" />
Run Code Online (Sandbox Code Playgroud)

对我的android/app/src/main/AndroidManifest.xml

启动应用程序时,我要做的第一件事是

PermissionHandler().requestPermissions([PermissionGroup.location]).then((val) {
  ...
});
Run Code Online (Sandbox Code Playgroud)

如果随后在仿真器或物理电话上运行此命令,它将返回PermissionStatus.unknown并随后向GeoLocator()控制台发送垃圾邮件

No permissions found in manifest for: $permission 
Run Code Online (Sandbox Code Playgroud)

如果我进入应用程序设置,则表示未请求特殊权限。

然后,当我打开与Android项目完全相同的项目(我都使用Android Studio时,有一个简洁的下拉选项可以在Android Studio中打开Android项目)并在我的手机上运行它可以按预期工作-它要求权限,如果我进入了应用程序设置,我也可以在此处看到所请求的权限。

任何人都知道为什么它不会随颤动而“传播”吗?

ged*_*agt 10

似乎主要的问题是,仅重新启动应用程序时未更新AndroidManifest.xml。但是,如果先执行a flutter clean然后重新构建,则会更新AndroidManifest.xml。

我不确定这是否是预期的行为,但它是否有效。只是要记住的东西。