当前位置: 首页 > 知识库问答 >
问题:

颤振-Android在发布模式下不请求许可-自动拒绝

郜俊晤
2023-03-14

一个星期以来,我一直不想问这个问题,现在我来了。我一直在努力解决Android系统的无许可问题。我已经开发了这个应用程序与颤振,并已上传到游戏商店进行开放测试。但是,在发布模式下,它从不请求许可。只是从来没有。没有消息或登录控制台/logcat。

我试过用两到三包flutter来做同样的事情,但是没有一个成功。它在调试模式下完美工作,权限弹出窗口出现,您允许它和函数正常工作。在发布构建的情况下,弹出窗口不会出现。当您检查应用程序的权限设置时,您会看到在Android7.0, 8.0, 10的每台设备中,每次都自动拒绝该权限(未在其他设备中尝试过)。即使允许设置中的权限,它也不起作用,权限再次被拒绝。

我使用的代码:

>

var permissionStatus =
    await Permission.getPermissionsStatus([PermissionName.Storage]);
print(permissionStatus.toString());
if (permissionStatus.first.permissionStatus == PermissionStatus.allow) {
  _saveFile();
} else {
  var permissions =
      await Permission.requestPermissions([PermissionName.Storage]);
  print(permissions.first.permissionStatus.toString());
  if (permissions.first.permissionStatus == PermissionStatus.allow)
    _saveFile();
  else
    Fluttertoast.showToast(
        msg: "Storage permission required to share!",
        toastLength: Toast.LENGTH_LONG,
        gravity: ToastGravity.BOTTOM,
        timeInSecForIosWeb: 2,
        backgroundColor: greyColor,
        textColor: Colors.white,
        fontSize: 16.0);
}

具有权限\u处理程序包:

if (await permissionsService.hasStoragePermission()) {
   print("Saving file");
  _saveFile();
} else {
final PermissionHandler _permissionHandler = PermissionHandler();

var permission =
  Platform.isAndroid ? PermissionGroup.storage : PermissionGroup.photos;
var result = await _permissionHandler.requestPermissions([permission]);

if (result[permission] == PermissionStatus.granted)
   _saveFile();
else
  Fluttertoast.showToast(
    msg: "Storage permission required to share!",
    toastLength: Toast.LENGTH_LONG,
    gravity: ToastGravity.BOTTOM,
    timeInSecForIosWeb: 2,
    backgroundColor: greyColor,
    textColor: Colors.white,
    fontSize: 16.0);

我也尝试过使用权限服务。

我在这里找到了类似的问题,没有答案-Flutter应用程序不会在发布模式下要求存储权限

我的应用程序已经被Google play Store延迟了16天进行验证,请提供解决方案,这样我就可以避免进一步的延迟。不,颤振清洁没有帮助。

编辑-搜索更多包以在发布上进行权限处理。dev,我发现permission_插件也不起作用,同样的问题,但它在logcat中给出了一个错误。

错误-

2020-10-02 23:54:44.289 16214-16260/? E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(171)] Unhandled Exception:
    MissingPluginException(No implementation found for method check-permissions on channel permissions_plugin)
#0  MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157)
    <asynchronous suspension>
#1  PermissionsPlugin.checkPermissions (package:permissions_plugin/permissions_plugin.dart:69)
    <asynchronous suspension>
#2   _CertificateState._saveImage (package:app_name/screens/app_screen.dart:211)
    <asynchronous suspension>

更新:此错误也与其他权限包一起出现。现在,我相信这就是问题的原因。我会分享任何需要的代码。

共有3个答案

长孙章横
2023-03-14

我也有同样的问题,也找不到解决方案,但当我试图降低android模拟器的API时,从30 API降低到28 API,它突然起作用了。

蔺宇
2023-03-14

您是否已将以下代码添加到android清单文件中?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
孔志强
2023-03-14

我通过创建一个新项目并复制其中的代码解决了这个问题。这一建议是在类似的官方回购问题上发现的。我相信这是因为将通道从主通道更改为稳定通道,正如该问题线程中所讨论的,但再次将其更改回主通道并不能解决问题。我也找遍了与插件异常相关的所有地方,但没有找到有效的答案/解决方案。

开发人员应该认真考虑这个bug/问题。

 类似资料:
  • 从已安装的APK运行应用程序时,我会遇到问题,但直接从Android studio运行时,该应用程序运行良好。在物理设备和模拟器上进行测试,还可以使用构建模式debug、profile和release(其中release和profile模式当然只适用于物理设备) 摘要:a)共享pref、路径提供程序和权限处理程序生成一个。b) Android后退按钮不起作用。 这些可能是独立的问题,但我强烈怀疑它

  • 目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS

  • 输入颤振医生时出错 --Android许可证 颤振医生 --Android许可证错误:- 未找到Android sdkmanager。更新到最新的 Android SDK,并确保安装了 cmdline 工具来解决此问题。 我有Android SDK的更新版本,即使我提供了环境路径,请任何人为此提供解决方案

  • 我在安装android SDK命令行工具后遇到了这个错误。

  • 我在安装颤动时遇到了3个错误:[!]Android工具链 - 为Android设备开发(AndroidSDK 27.0.3)!某些Android许可证不被接受。要解决此问题,请运行:颤抖医生 - android许可证 [✓] Android Studio ✗颤振插件没有安装;这增加了颤振的特定功能。 ✗ Dart插件未安装;这增加了Dart特定的功能。 我可以在android工作室安装插件,但如何

  • 我正在使用permission_handler包请求对应用程序中存储的读取权限,在调试模式下一切工作正常,当我以“flutter run-release”运行代码时,问题就出现了,但当我将代码导出为apk时,权限对话框不会出现。我不知道我做错了什么请帮帮我!! 这是飞镖代码