Flutter - Android ne demande pas l'autorisation en mode de sortie - Auto refusé
Après m'être arrêté de poser cette question pendant une semaine, me voilà. J'ai essayé de résoudre le problème de non-autorisation d'Android. J'ai développé cette application avec Flutter et l'ai téléchargée sur Play Store pour des tests ouverts. Mais, en mode version, il ne demande jamais la permission. Jamais. Aucun message ou connexion à la console / logcat.
J'ai essayé d'utiliser deux ou trois paquets de flutter pour le même mais aucun n'a fonctionné. Cela fonctionne parfaitement en mode débogage, la fenêtre contextuelle d'autorisation s'affiche, vous l'autorisez et les fonctions fonctionnent comme elles le devraient. En cas de build de version, le pop-up ne vient pas. Lorsque vous vérifiez les paramètres d'autorisations de l'application, vous voyez que l'autorisation a été automatiquement refusée à chaque fois sur chaque appareil sous Android 7.0, 8.0, 10 (pas essayé sur d'autres). Même après avoir autorisé l'autorisation des paramètres, cela ne fonctionne pas et l'autorisation est à nouveau refusée.
Code que j'ai utilisé:
Avec le package d' autorisation :
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); }Avec le package permission_handler :
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);
J'ai également essayé d'utiliser le service d'autorisation.
J'ai trouvé une question similaire sans réponse ici - L' application Flutter ne demandera pas l'autorisation de stockage en mode de sortie
Mon application a déjà été retardée par Google Play Store en prenant 16 jours pour vérifier, veuillez fournir une solution afin que je puisse éviter d'autres retards. Et non, flutter cleança n'aide pas.
EDIT - En cherchant plus de paquets pour la gestion des autorisations sur pub.dev, j'ai trouvé permission_plugin qui ne fonctionne pas non plus, même problème mais cela donne une erreur dans logcat.
L'erreur -
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>
Mise à jour: cette erreur est également fournie avec d'autres packages d'autorisations. Maintenant, je crois que c'est la cause du problème. Je partagerai n'importe quel morceau de code requis.
Réponses
J'ai résolu ce problème en créant un nouveau projet et en copiant le code qu'il contient. Cette suggestion a été trouvée sur un numéro similaire de Official Flutter Github Repo. Je pense que cela se produit en raison du changement du canal en stable à partir de master comme discuté dans ce fil de discussion, mais le changer à nouveau ne résout pas le problème. J'ai également regardé partout lié à l'exception du plugin mais aucune réponse / solution n'a fonctionné.
Ce bogue / problème devrait vraiment être examiné par les développeurs.
Avez-vous ajouté le code ci-dessous au fichier manifeste Android?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>