I am trying to make use of the Permission Handler plugin to develop an application which asks for location permissions. And I am testing my app on a physical device. Oh, and I am focusing mostly on android side of flutter.
At the very first try (I mean, when I installed plugin and implemented it), it asked for a permission about making use of WiFi and GPS to get an accurate estimate of the location, which I agreed. Oh, and this permission dialog showed up when I made use of check permission status function (and not the request permission function). But still, I agreed.
And now that I added the request permission function, it isn't showing any dialog. To get rid of the problem, I uninstalled the app, cleared cache, cleared data and used Flutter clean, but to no avail.
Here's the code:
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
var textColor = Color.fromRGBO(19, 14, 83, 1);
var lightColor = Color.fromRGBO(195, 195, 195, 1);
var mainColor = Color.fromRGBO(255, 197, 36, 1);
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
PermissionStatus _status;
bool checked = false;
@override
void initState() {
super.initState();
if(checked == false) {
PermissionHandler().checkPermissionStatus(PermissionGroup.location).then((status) {
if(status != _status) {
setState(() {
_status = status;
checked = true;
});
}
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
Text(
_status.toString(),
),
OutlineButton(onPressed: () {
PermissionHandler().requestPermissions([PermissionGroup.location]).then(
(Map<PermissionGroup, PermissionStatus> statuses) {
PermissionStatus status = statuses[PermissionStatus];
if(status != _status) {
setState(() {
_status = status;
});
}
}
);
}),
],
),
),
);
}
}
And here's my "MAIN" Android Manifest file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.technoscans.weatherly">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:name="io.flutter.app.FlutterApplication"
android:label="weatherly"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- This keeps the window background of the activity showing
until Flutter renders its first frame. It can be removed if
there is no splash screen (such as the default splash screen
defined in @style/LaunchTheme). -->
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
and the Debug Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.technoscans.weatherly">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
</manifest>
and the build.gradle (inside src folder):
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.technoscans.weatherly"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
+1
Same issue here.
D:\MyProjects\iex_driver>flutter doctor -v
[√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.18362.778], locale en-IN)
• Flutter version 1.12.13+hotfix.9 at C:\Saravanan\Flutter_Sdk\flutter
• Framework revision f139b11009 (4 weeks ago), 2020-03-30 13:57:30 -0700
• Engine revision af51afceb8
• Dart version 2.7.2
Has anyone resolved this?
Facing a similar issue
The app wont ask the user for permissions
it works fine in debug mode
I have the same issue. When running the app in debug mode (via flutter run in console) everything works fine and the requests pop up.
However in release mode, nothing shows.
Any solution yet?
Does the app already have permissions?
Check "Settings -> Privacy ->
If not, please update your Flutter version and use the latest version of permission_handler and provide us with flutter doctor -v and a sample of the code that is triggering the issue
same issue
The same issue, is there any solution yet? The permission handler asks for permissions in debug mode but in release mode, it just says the permission was denied.
Same issue on my side, app has no permissions granted and doesn't ask for it. Even if I add manually permissions, the app doesn't work for all that
Does the app already have permissions?
Check "Settings -> Privacy ->
" on iOS, or "Settings -> Apps & Notifications -> Permission Manager -> Location" on Android 10. If not, please update your Flutter version and use the latest version of permission_handler and provide us with
flutter doctor -vand a sample of the code that is triggering the issue
Sorry @danielroek , I haven't used the flutter-permission-handler for a while (and still am not using it, since my job required me to switch to ReactJS :) ).
@gagan722 @thecaptainXgod @rsommerard if possible, can you please provide the details to @danielroek
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Hi guys, so I don't know if you made the dumbest mistake like me. I fixed the issue by adding these lines to AndroidManifest.xml in the _main_ folder.
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
The problem was I added these in debug & profile folders in the AndroidManifest.xml file but not in the main that is why can't use it when the app was build in release mode.
Also, I have attached the screenshot for the same.

Steps:
Hope this helps you too :)
This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.
Hi, I have the same issue.
when this line is running
PermissionStatus permission = await Permission.contacts.status;
this error appear and exit my app.

my AndroidManifest.xml have this line:

Most helpful comment
Hi guys, so I don't know if you made the dumbest mistake like me. I fixed the issue by adding these lines to AndroidManifest.xml in the _main_ folder.
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/>The problem was I added these in debug & profile folders in the AndroidManifest.xml file but not in the main that is why can't use it when the app was build in release mode.
Also, I have attached the screenshot for the same.
Steps:
Hope this helps you too :)