【问题标题】:Permission requests are not propagated when launching with flutter but are when launching with android directly使用颤振启动时不会传播权限请求,但直接使用 android 启动时会传播权限请求
【发布时间】: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/profileandroid/app/src/main 中找到一个。我已经尝试了所有三个都没有运气。我缺一个吗? @TruongSinh 尝试了命令行和 Android Studio 的运行按钮。
  • 您是否尝试过更改其他内容(仅仅是清单权限没有更新还是其他的也一样?)
  • @jonathanHeindl 我只是尝试更改android:label,但它也没有反映在模拟器中。我看起来整个 AndroidManifest 都没有更新。

标签: android flutter


【解决方案1】:

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

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

【讨论】:

  • 非常感谢!清理项目并重新安装它完美无缺! :)
【解决方案2】:

只需在命令行中执行以下命令

flutter clean

在AndroidManifest.xml中添加权限后

【讨论】:

    【解决方案3】:

    您只需要执行以下两个步骤:

    1. 在 android 清单文件中添加权限。
    2. 在您的项目中执行命令 flutter clean

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多