Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
permission_handler
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
songyanzhi
permission_handler
Commits
565e77c8
Unverified
Commit
565e77c8
authored
Oct 19, 2019
by
Maurits van Beusekom
Committed by
GitHub
Oct 19, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #158 from ened/android-q-locationalways
Android Q: Support for locationAlways
parents
9aa77e4f
ff730b1b
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
52 additions
and
16 deletions
+52
-16
CHANGELOG.md
+5
-0
android/build.gradle
+4
-4
android/src/main/java/com/baseflow/permissionhandler/PermissionHandlerPlugin.java
+33
-6
example/android/app/build.gradle
+2
-2
example/android/app/src/main/AndroidManifest.xml
+1
-0
example/android/build.gradle
+1
-1
example/android/gradle.properties
+1
-0
example/android/gradle/wrapper/gradle-wrapper.properties
+1
-1
lib/src/permission_enums.dart
+3
-1
pubspec.yaml
+1
-1
No files found.
CHANGELOG.md
View file @
565e77c8
## 3.3.0
*
Android: Add support for requesting the background location permission within the
`locationAlways`
group.
*
Android: Update AGP, Gradle and AndroidX dependencies
## 3.2.2
## 3.2.2
*
Fixed problem with dependency on specific version of gradle wrapper on Android.
*
Fixed problem with dependency on specific version of gradle wrapper on Android.
...
...
android/build.gradle
View file @
565e77c8
...
@@ -9,7 +9,7 @@ buildscript {
...
@@ -9,7 +9,7 @@ buildscript {
}
}
dependencies
{
dependencies
{
classpath
'com.android.tools.build:gradle:3.
4
.1'
classpath
'com.android.tools.build:gradle:3.
5
.1'
}
}
}
}
...
@@ -23,7 +23,7 @@ rootProject.allprojects {
...
@@ -23,7 +23,7 @@ rootProject.allprojects {
apply
plugin:
'com.android.library'
apply
plugin:
'com.android.library'
android
{
android
{
compileSdkVersion
2
8
compileSdkVersion
2
9
defaultConfig
{
defaultConfig
{
minSdkVersion
16
minSdkVersion
16
...
@@ -35,8 +35,8 @@ android {
...
@@ -35,8 +35,8 @@ android {
}
}
dependencies
{
dependencies
{
implementation
'androidx.annotation:annotation:1.
0.2
'
implementation
'androidx.annotation:annotation:1.
1.0
'
implementation
'androidx.core:core:1.
0.2
'
implementation
'androidx.core:core:1.
1.0
'
}
}
repositories
{
repositories
{
...
...
android/src/main/java/com/baseflow/permissionhandler/PermissionHandlerPlugin.java
View file @
565e77c8
...
@@ -166,6 +166,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
...
@@ -166,6 +166,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
case
Manifest
.
permission
.
WRITE_CONTACTS
:
case
Manifest
.
permission
.
WRITE_CONTACTS
:
case
Manifest
.
permission
.
GET_ACCOUNTS
:
case
Manifest
.
permission
.
GET_ACCOUNTS
:
return
PERMISSION_GROUP_CONTACTS
;
return
PERMISSION_GROUP_CONTACTS
;
case
Manifest
.
permission
.
ACCESS_BACKGROUND_LOCATION
:
return
PERMISSION_GROUP_LOCATION_ALWAYS
;
case
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
:
case
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
:
case
Manifest
.
permission
.
ACCESS_FINE_LOCATION
:
case
Manifest
.
permission
.
ACCESS_FINE_LOCATION
:
return
PERMISSION_GROUP_LOCATION
;
return
PERMISSION_GROUP_LOCATION
;
...
@@ -450,17 +452,20 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
...
@@ -450,17 +452,20 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_SPEECH
))
{
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_SPEECH
))
{
mRequestResults
.
put
(
PERMISSION_GROUP_SPEECH
,
toPermissionStatus
(
grantResults
[
i
]));
mRequestResults
.
put
(
PERMISSION_GROUP_SPEECH
,
toPermissionStatus
(
grantResults
[
i
]));
}
}
}
else
if
(
permission
==
PERMISSION_GROUP_LOCATION
)
{
}
else
if
(
permission
==
PERMISSION_GROUP_LOCATION_ALWAYS
)
{
final
Context
context
=
mRegistrar
.
activity
()
==
null
?
mRegistrar
.
activeContext
()
:
mRegistrar
.
activity
();
@PermissionStatus
int
permissionStatus
=
determineActualLocationStatus
(
grantResults
[
i
]);
final
boolean
isLocationServiceEnabled
=
context
!=
null
&&
isLocationServiceEnabled
(
context
);
@PermissionStatus
int
permissionStatus
=
toPermissionStatus
(
grantResults
[
i
]);
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_LOCATION_ALWAYS
))
{
if
(
permissionStatus
==
PERMISSION_STATUS_GRANTED
&&
!
isLocationServiceEnabled
)
{
mRequestResults
.
put
(
PERMISSION_GROUP_LOCATION_ALWAYS
,
permissionStatus
);
permissionStatus
=
PERMISSION_STATUS_DISABLED
;
}
}
}
else
if
(
permission
==
PERMISSION_GROUP_LOCATION
)
{
@PermissionStatus
int
permissionStatus
=
determineActualLocationStatus
(
grantResults
[
i
]);
if
(
VERSION
.
SDK_INT
<
VERSION_CODES
.
Q
)
{
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_LOCATION_ALWAYS
))
{
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_LOCATION_ALWAYS
))
{
mRequestResults
.
put
(
PERMISSION_GROUP_LOCATION_ALWAYS
,
permissionStatus
);
mRequestResults
.
put
(
PERMISSION_GROUP_LOCATION_ALWAYS
,
permissionStatus
);
}
}
}
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_LOCATION_WHEN_IN_USE
))
{
if
(!
mRequestResults
.
containsKey
(
PERMISSION_GROUP_LOCATION_WHEN_IN_USE
))
{
mRequestResults
.
put
(
PERMISSION_GROUP_LOCATION_WHEN_IN_USE
,
permissionStatus
);
mRequestResults
.
put
(
PERMISSION_GROUP_LOCATION_WHEN_IN_USE
,
permissionStatus
);
...
@@ -475,6 +480,23 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
...
@@ -475,6 +480,23 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
processResult
();
processResult
();
}
}
/**
* Crosschecks a permission grant result with the location service availability.
*
* @param grantResult Grant Result as received from the Android system.
*/
@PermissionStatus
private
int
determineActualLocationStatus
(
int
grantResult
)
{
final
Context
context
=
mRegistrar
.
activity
()
==
null
?
mRegistrar
.
activeContext
()
:
mRegistrar
.
activity
();
final
boolean
isLocationServiceEnabled
=
context
!=
null
&&
isLocationServiceEnabled
(
context
);
@PermissionStatus
int
permissionStatus
=
toPermissionStatus
(
grantResult
);
if
(
permissionStatus
==
PERMISSION_STATUS_GRANTED
&&
!
isLocationServiceEnabled
)
{
permissionStatus
=
PERMISSION_STATUS_DISABLED
;
}
return
permissionStatus
;
}
private
void
handleIgnoreBatteryOptimizationsRequest
(
boolean
granted
)
{
private
void
handleIgnoreBatteryOptimizationsRequest
(
boolean
granted
)
{
if
(
mResult
==
null
)
{
if
(
mResult
==
null
)
{
return
;
return
;
...
@@ -551,6 +573,11 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
...
@@ -551,6 +573,11 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
break
;
break
;
case
PERMISSION_GROUP_LOCATION_ALWAYS:
case
PERMISSION_GROUP_LOCATION_ALWAYS:
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
if
(
hasPermissionInManifest
(
Manifest
.
permission
.
ACCESS_BACKGROUND_LOCATION
))
permissionNames
.
add
(
Manifest
.
permission
.
ACCESS_BACKGROUND_LOCATION
);
}
case
PERMISSION_GROUP_LOCATION_WHEN_IN_USE:
case
PERMISSION_GROUP_LOCATION_WHEN_IN_USE:
case
PERMISSION_GROUP_LOCATION:
case
PERMISSION_GROUP_LOCATION:
if
(
hasPermissionInManifest
(
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
))
if
(
hasPermissionInManifest
(
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
))
...
...
example/android/app/build.gradle
View file @
565e77c8
...
@@ -25,7 +25,7 @@ apply plugin: 'com.android.application'
...
@@ -25,7 +25,7 @@ apply plugin: 'com.android.application'
apply
from:
"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply
from:
"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android
{
android
{
compileSdkVersion
2
8
compileSdkVersion
2
9
lintOptions
{
lintOptions
{
disable
'InvalidPackage'
disable
'InvalidPackage'
...
@@ -35,7 +35,7 @@ android {
...
@@ -35,7 +35,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId
"com.example.permissionhandlerexample"
applicationId
"com.example.permissionhandlerexample"
minSdkVersion
16
minSdkVersion
16
targetSdkVersion
2
8
targetSdkVersion
2
9
versionCode
flutterVersionCode
.
toInteger
()
versionCode
flutterVersionCode
.
toInteger
()
versionName
flutterVersionName
versionName
flutterVersionName
}
}
...
...
example/android/app/src/main/AndroidManifest.xml
View file @
565e77c8
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
<!-- Permissions options for the `location` group -->
<!-- Permissions options for the `location` group -->
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_BACKGROUND_LOCATION"
/>
<!-- Permissions options for the `microphone` or `speech` group -->
<!-- Permissions options for the `microphone` or `speech` group -->
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
...
...
example/android/build.gradle
View file @
565e77c8
...
@@ -5,7 +5,7 @@ buildscript {
...
@@ -5,7 +5,7 @@ buildscript {
}
}
dependencies
{
dependencies
{
classpath
'com.android.tools.build:gradle:3.
4
.1'
classpath
'com.android.tools.build:gradle:3.
5
.1'
}
}
}
}
...
...
example/android/gradle.properties
View file @
565e77c8
org.gradle.jvmargs
=
-Xmx1536M
org.gradle.jvmargs
=
-Xmx1536M
android.enableJetifier
=
true
android.enableJetifier
=
true
android.useAndroidX
=
true
android.useAndroidX
=
true
android.enableR8
=
true
example/android/gradle/wrapper/gradle-wrapper.properties
View file @
565e77c8
...
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
...
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath
=
wrapper/dists
distributionPath
=
wrapper/dists
zipStoreBase
=
GRADLE_USER_HOME
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
zipStorePath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-5.
4
.1-all.zip
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-5.
6
.1-all.zip
lib/src/permission_enums.dart
View file @
565e77c8
...
@@ -99,7 +99,9 @@ class PermissionGroup {
...
@@ -99,7 +99,9 @@ class PermissionGroup {
/// iOS: CoreLocation (Always and WhenInUse)
/// iOS: CoreLocation (Always and WhenInUse)
static
const
PermissionGroup
location
=
PermissionGroup
.
_
(
3
);
static
const
PermissionGroup
location
=
PermissionGroup
.
_
(
3
);
/// Android: Fine and Coarse Location
/// Android:
/// When running on Android < Q: Fine and Coarse Location
/// When running on Android Q and above: Background Location Permission
/// iOS: CoreLocation - Always
/// iOS: CoreLocation - Always
static
const
PermissionGroup
locationAlways
=
PermissionGroup
.
_
(
4
);
static
const
PermissionGroup
locationAlways
=
PermissionGroup
.
_
(
4
);
...
...
pubspec.yaml
View file @
565e77c8
name
:
permission_handler
name
:
permission_handler
description
:
Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
description
:
Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
version
:
3.
2.2
version
:
3.
3.0
authors
:
authors
:
-
Baseflow <hello@baseflow.com>
-
Baseflow <hello@baseflow.com>
-
long1eu <home@long1.eu>
-
long1eu <home@long1.eu>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment