一个星期以来,我一直不想问这个问题,现在我来了。我一直在努力解决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>
更新:此错误也与其他权限包一起出现。现在,我相信这就是问题的原因。我会分享任何需要的代码。
我也有同样的问题,也找不到解决方案,但当我试图降低android模拟器的API时,从30 API降低到28 API,它突然起作用了。
您是否已将以下代码添加到android清单文件中?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我通过创建一个新项目并复制其中的代码解决了这个问题。这一建议是在类似的官方回购问题上发现的。我相信这是因为将通道从主通道更改为稳定通道,正如该问题线程中所讨论的,但再次将其更改回主通道并不能解决问题。我也找遍了与插件异常相关的所有地方,但没有找到有效的答案/解决方案。
开发人员应该认真考虑这个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时,权限对话框不会出现。我不知道我做错了什么请帮帮我!! 这是飞镖代码