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
f980cf85
Commit
f980cf85
authored
Oct 11, 2018
by
Maurits van Beusekom
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
https://github.com/BaseflowIT/flutter-permission-handler
into develop
parents
d52c9e15
4de64c47
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
5 deletions
+41
-5
android/.classpath
+1
-1
android/src/main/kotlin/com/baseflow/permissionhandler/PermissionHandlerPlugin.kt
+40
-4
No files found.
android/.classpath
View file @
f980cf85
...
@@ -2,5 +2,5 @@
...
@@ -2,5 +2,5 @@
<classpath>
<classpath>
<classpathentry
kind=
"con"
path=
"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"
/>
<classpathentry
kind=
"con"
path=
"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"
/>
<classpathentry
kind=
"con"
path=
"org.eclipse.buildship.core.gradleclasspathcontainer"
/>
<classpathentry
kind=
"con"
path=
"org.eclipse.buildship.core.gradleclasspathcontainer"
/>
<classpathentry
kind=
"output"
path=
"bin"
/>
<classpathentry
kind=
"output"
path=
"bin
/default
"
/>
</classpath>
</classpath>
android/src/main/kotlin/com/baseflow/permissionhandler/PermissionHandlerPlugin.kt
View file @
f980cf85
...
@@ -6,6 +6,7 @@ import android.content.Intent
...
@@ -6,6 +6,7 @@ import android.content.Intent
import
android.content.pm.PackageInfo
import
android.content.pm.PackageInfo
import
android.content.pm.PackageManager
import
android.content.pm.PackageManager
import
android.os.Build
import
android.os.Build
import
android.provider.Settings
import
android.support.v4.app.ActivityCompat
import
android.support.v4.app.ActivityCompat
import
android.support.v4.content.ContextCompat
import
android.support.v4.content.ContextCompat
import
android.util.Log
import
android.util.Log
...
@@ -18,6 +19,10 @@ import io.flutter.plugin.common.MethodChannel.Result
...
@@ -18,6 +19,10 @@ import io.flutter.plugin.common.MethodChannel.Result
import
io.flutter.plugin.common.MethodCall
import
io.flutter.plugin.common.MethodCall
import
io.flutter.plugin.common.PluginRegistry
import
io.flutter.plugin.common.PluginRegistry
import
io.flutter.plugin.common.PluginRegistry.Registrar
import
io.flutter.plugin.common.PluginRegistry.Registrar
import
android.text.TextUtils
import
android.provider.Settings.SettingNotFoundException
class
PermissionHandlerPlugin
(
private
val
registrar
:
Registrar
,
private
var
requestedPermissions
:
MutableList
<
String
>?
=
null
)
:
MethodCallHandler
{
class
PermissionHandlerPlugin
(
private
val
registrar
:
Registrar
,
private
var
requestedPermissions
:
MutableList
<
String
>?
=
null
)
:
MethodCallHandler
{
private
var
mRequestResults
=
mutableMapOf
<
PermissionGroup
,
PermissionStatus
>()
private
var
mRequestResults
=
mutableMapOf
<
PermissionGroup
,
PermissionStatus
>()
...
@@ -149,6 +154,12 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
...
@@ -149,6 +154,12 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
}
}
}
}
if
(
permission
==
PermissionGroup
.
LOCATION
||
permission
==
PermissionGroup
.
LOCATION_ALWAYS
||
permission
==
PermissionGroup
.
LOCATION_WHEN_IN_USE
)
{
if
(!
isLocationServiceEnabled
(
context
))
{
return
PermissionStatus
.
DISABLED
}
}
return
PermissionStatus
.
GRANTED
return
PermissionStatus
.
GRANTED
}
}
...
@@ -245,16 +256,20 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
...
@@ -245,16 +256,20 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
mRequestResults
[
PermissionGroup
.
SPEECH
]
=
grantResults
[
i
].
toPermissionStatus
()
mRequestResults
[
PermissionGroup
.
SPEECH
]
=
grantResults
[
i
].
toPermissionStatus
()
}
}
}
else
if
(
permission
==
PermissionGroup
.
LOCATION
)
{
}
else
if
(
permission
==
PermissionGroup
.
LOCATION
)
{
val
context
:
Context
?
=
registrar
.
activity
()
?:
registrar
.
activeContext
()
val
isLocationServiceEnabled
=
if
(
context
==
null
)
false
else
isLocationServiceEnabled
(
context
)
val
permissionStatus
=
if
(
isLocationServiceEnabled
)
grantResults
[
i
].
toPermissionStatus
()
else
PermissionStatus
.
DISABLED
if
(!
mRequestResults
.
containsKey
(
PermissionGroup
.
LOCATION_ALWAYS
))
{
if
(!
mRequestResults
.
containsKey
(
PermissionGroup
.
LOCATION_ALWAYS
))
{
mRequestResults
[
PermissionGroup
.
LOCATION_ALWAYS
]
=
grantResults
[
i
].
toPermissionStatus
()
mRequestResults
[
PermissionGroup
.
LOCATION_ALWAYS
]
=
permissionStatus
}
}
if
(!
mRequestResults
.
containsKey
(
PermissionGroup
.
LOCATION_WHEN_IN_USE
))
{
if
(!
mRequestResults
.
containsKey
(
PermissionGroup
.
LOCATION_WHEN_IN_USE
))
{
mRequestResults
[
PermissionGroup
.
LOCATION_WHEN_IN_USE
]
=
grantResults
[
i
].
toPermissionStatus
()
mRequestResults
[
PermissionGroup
.
LOCATION_WHEN_IN_USE
]
=
permissionStatus
}
}
}
if
(!
mRequestResults
.
containsKey
(
permission
))
{
mRequestResults
[
permission
]
=
permissionStatus
}
else
if
(!
mRequestResults
.
containsKey
(
permission
))
{
mRequestResults
[
permission
]
=
grantResults
[
i
].
toPermissionStatus
()
mRequestResults
[
permission
]
=
grantResults
[
i
].
toPermissionStatus
()
}
}
...
@@ -436,6 +451,27 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
...
@@ -436,6 +451,27 @@ class PermissionHandlerPlugin(private val registrar: Registrar, private var requ
return
false
return
false
}
}
private
fun
isLocationServiceEnabled
(
context
:
Context
):
Boolean
{
val
locationMode
:
Int
val
locationProviders
:
String
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
try
{
locationMode
=
Settings
.
Secure
.
getInt
(
context
.
contentResolver
,
Settings
.
Secure
.
LOCATION_MODE
)
}
catch
(
e
:
SettingNotFoundException
)
{
e
.
printStackTrace
()
return
false
}
return
locationMode
!=
Settings
.
Secure
.
LOCATION_MODE_OFF
}
else
{
locationProviders
=
Settings
.
Secure
.
getString
(
context
.
contentResolver
,
Settings
.
Secure
.
LOCATION_PROVIDERS_ALLOWED
)
return
!
TextUtils
.
isEmpty
(
locationProviders
)
}
}
private
fun
handleSuccess
(
permissionStatus
:
PermissionStatus
,
result
:
Result
?)
{
private
fun
handleSuccess
(
permissionStatus
:
PermissionStatus
,
result
:
Result
?)
{
result
?.
success
(
Codec
.
encodePermissionStatus
(
permissionStatus
))
result
?.
success
(
Codec
.
encodePermissionStatus
(
permissionStatus
))
}
}
...
...
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