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
d40fbe02
Commit
d40fbe02
authored
Apr 01, 2020
by
Maurits van Beusekom
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'hotfix/4.4.0' of github.com:Baseflow/flutter-permission-handler into hotfix/4.4.0
parents
0fe0135f
e700d04d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
86 additions
and
62 deletions
+86
-62
permission_handler/android/src/main/java/com/baseflow/permissionhandler/MethodCallHandlerImpl.java
+23
-19
permission_handler/android/src/main/java/com/baseflow/permissionhandler/PermissionHandlerPlugin.java
+63
-43
No files found.
permission_handler/android/src/main/java/com/baseflow/permissionhandler/MethodCallHandlerImpl.java
View file @
d40fbe02
...
...
@@ -5,6 +5,7 @@ import android.content.Context;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
io.flutter.plugin.common.BinaryMessenger
;
import
io.flutter.plugin.common.MethodCall
;
import
io.flutter.plugin.common.MethodChannel
;
...
...
@@ -16,35 +17,42 @@ import java.util.List;
final
class
MethodCallHandlerImpl
implements
MethodChannel
.
MethodCallHandler
{
private
final
Context
applicationContext
;
private
final
Activity
activity
;
private
final
AppSettingsManager
appSettingsManager
;
private
final
PermissionManager
permissionManager
;
private
final
ServiceManager
serviceManager
;
private
final
ActivityRegistry
activityRegistry
;
private
final
PermissionRegistry
permissionRegistry
;
private
final
MethodChannel
methodChannel
;
MethodCallHandlerImpl
(
Context
applicationContext
,
Activity
activity
,
BinaryMessenger
messenger
,
AppSettingsManager
appSettingsManager
,
PermissionManager
permissionManager
,
ServiceManager
serviceManager
,
ActivityRegistry
activityRegistry
,
PermissionRegistry
permissionRegistry
)
{
ServiceManager
serviceManager
)
{
this
.
applicationContext
=
applicationContext
;
this
.
activity
=
activity
;
this
.
appSettingsManager
=
appSettingsManager
;
this
.
permissionManager
=
permissionManager
;
this
.
serviceManager
=
serviceManager
;
}
@Nullable
private
Activity
activity
;
@Nullable
private
ActivityRegistry
activityRegistry
;
@Nullable
private
PermissionRegistry
permissionRegistry
;
public
void
setActivity
(
@Nullable
Activity
activity
)
{
this
.
activity
=
activity
;
}
public
void
setActivityRegistry
(
@Nullable
ActivityRegistry
activityRegistry
)
{
this
.
activityRegistry
=
activityRegistry
;
this
.
permissionRegistry
=
permissionRegistry
;
}
methodChannel
=
new
MethodChannel
(
messenger
,
"flutter.baseflow.com/permissions/methods"
);
methodChannel
.
setMethodCallHandler
(
this
);
public
void
setPermissionRegistry
(
@Nullable
PermissionRegistry
permissionRegistry
)
{
this
.
permissionRegistry
=
permissionRegistry
;
}
@Override
...
...
@@ -102,8 +110,4 @@ final class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler {
break
;
}
}
void
stopListening
()
{
methodChannel
.
setMethodCallHandler
(
null
);
}
}
permission_handler/android/src/main/java/com/baseflow/permissionhandler/PermissionHandlerPlugin.java
View file @
d40fbe02
...
...
@@ -2,19 +2,16 @@ package com.baseflow.permissionhandler;
import
android.app.Activity
;
import
android.content.Context
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
com.baseflow.permissionhandler.PermissionManager.ActivityRegistry
;
import
com.baseflow.permissionhandler.PermissionManager.PermissionRegistry
;
import
io.flutter.embedding.engine.plugins.FlutterPlugin
;
import
io.flutter.embedding.engine.plugins.activity.ActivityAware
;
import
io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
;
import
io.flutter.plugin.common.BinaryMessenger
;
import
io.flutter.plugin.common.MethodChannel
;
import
io.flutter.plugin.common.PluginRegistry.Registrar
;
import
io.flutter.embedding.engine.plugins.FlutterPlugin
;
import
com.baseflow.permissionhandler.PermissionManager.ActivityRegistry
;
import
com.baseflow.permissionhandler.PermissionManager.PermissionRegistry
;
/**
* Platform implementation of the permission_handler Flutter plugin.
...
...
@@ -26,8 +23,11 @@ import com.baseflow.permissionhandler.PermissionManager.PermissionRegistry;
* stable {@code io.flutter.plugin.common} package.
*/
public
final
class
PermissionHandlerPlugin
implements
FlutterPlugin
,
ActivityAware
{
private
@Nullable
FlutterPluginBinding
flutterPluginBinding
;
private
@Nullable
MethodCallHandlerImpl
methodCallHandler
;
private
MethodChannel
methodChannel
;
@Nullable
private
MethodCallHandlerImpl
methodCallHandler
;
/**
* Registers a plugin implementation that uses the stable {@code io.flutter.plugin.common}
...
...
@@ -37,43 +37,38 @@ public final class PermissionHandlerPlugin implements FlutterPlugin, ActivityAwa
* won't react to changes in activity or context, unlike {@link PermissionHandlerPlugin}.
*/
public
static
void
registerWith
(
Registrar
registrar
)
{
final
PermissionHandlerPlugin
permissionHandlerPlugin
=
new
PermissionHandlerPlugin
();
permissionHandlerPlugin
.
startListening
(
registrar
.
context
(),
final
PermissionHandlerPlugin
plugin
=
new
PermissionHandlerPlugin
();
plugin
.
startListening
(
registrar
.
context
(),
registrar
.
messenger
());
if
(
registrar
.
activeContext
()
instanceof
Activity
)
{
plugin
.
startListeningToActivity
(
registrar
.
activity
(),
registrar
.
messenger
(),
registrar:
:
addActivityResultListener
,
registrar:
:
addRequestPermissionsResultListener
);
}
}
@Override
public
void
onAttachedToEngine
(
@NonNull
FlutterPluginBinding
binding
)
{
this
.
flutterPluginBinding
=
binding
;
startListening
(
binding
.
getApplicationContext
(),
binding
.
getBinaryMessenger
()
);
}
@Override
public
void
onDetachedFromEngine
(
@NonNull
FlutterPluginBinding
binding
)
{
this
.
flutterPluginBinding
=
null
;
stopListening
()
;
}
@Override
public
void
onAttachedToActivity
(
@NonNull
ActivityPluginBinding
binding
)
{
if
(
flutterPluginBinding
==
null
)
{
return
;
}
startListening
(
flutterPluginBinding
.
getApplicationContext
(),
startListeningToActivity
(
binding
.
getActivity
(),
flutterPluginBinding
.
getBinaryMessenger
(),
binding:
:
addActivityResultListener
,
binding:
:
addRequestPermissionsResultListener
);
}
@Override
public
void
onDetachedFromActivityForConfigChanges
()
{
onDetachedFromActivity
();
binding:
:
addRequestPermissionsResultListener
);
}
@Override
...
...
@@ -83,28 +78,53 @@ public final class PermissionHandlerPlugin implements FlutterPlugin, ActivityAwa
@Override
public
void
onDetachedFromActivity
()
{
if
(
methodCallHandler
==
null
)
{
return
;
stopListeningToActivity
();
}
methodCallHandler
.
stopListening
();
methodCallHandler
=
null
;
@Override
public
void
onDetachedFromActivityForConfigChanges
()
{
onDetachedFromActivity
();
}
private
void
startListening
(
Context
applicationContext
,
Activity
activity
,
BinaryMessenger
messenger
,
ActivityRegistry
activityRegistry
,
PermissionRegistry
permissionRegistry
)
{
private
void
startListening
(
Context
applicationContext
,
BinaryMessenger
messenger
)
{
methodChannel
=
new
MethodChannel
(
messenger
,
"flutter.baseflow.com/permissions/methods"
);
methodCallHandler
=
new
MethodCallHandlerImpl
(
applicationContext
,
activity
,
messenger
,
new
AppSettingsManager
(),
new
PermissionManager
(),
new
ServiceManager
(),
activityRegistry
,
permissionRegistry
);
new
ServiceManager
()
);
methodChannel
.
setMethodCallHandler
(
methodCallHandler
);
}
private
void
stopListening
()
{
methodChannel
.
setMethodCallHandler
(
null
);
methodChannel
=
null
;
methodCallHandler
=
null
;
}
private
void
startListeningToActivity
(
Activity
activity
,
ActivityRegistry
activityRegistry
,
PermissionRegistry
permissionRegistry
)
{
if
(
methodCallHandler
!=
null
)
{
methodCallHandler
.
setActivity
(
activity
);
methodCallHandler
.
setActivityRegistry
(
activityRegistry
);
methodCallHandler
.
setPermissionRegistry
(
permissionRegistry
);
}
}
private
void
stopListeningToActivity
()
{
if
(
methodCallHandler
!=
null
)
{
methodCallHandler
.
setActivity
(
null
);
methodCallHandler
.
setActivityRegistry
(
null
);
methodCallHandler
.
setPermissionRegistry
(
null
);
}
}
}
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