diff --git a/shell/platform/android/io/flutter/app/FlutterActivity.java b/shell/platform/android/io/flutter/app/FlutterActivity.java index d40dadb409f68..f01e85a1a2437 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivity.java +++ b/shell/platform/android/io/flutter/app/FlutterActivity.java @@ -114,7 +114,7 @@ protected void onPostResume() { // @Override - added in API level 23 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - eventDelegate.onRequestPermissionResult(requestCode, permissions, grantResults); + eventDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override diff --git a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java index 0ad8eb998eb1f..4472b8b194ef6 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityDelegate.java @@ -29,9 +29,7 @@ import android.widget.FrameLayout; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.PluginRegistry; -import io.flutter.plugin.common.PluginRegistry.ActivityResultListener; import io.flutter.plugin.common.PluginRegistry.Registrar; -import io.flutter.plugin.common.PluginRegistry.RequestPermissionResultListener; import io.flutter.plugin.platform.PlatformPlugin; import io.flutter.util.Preconditions; import io.flutter.view.FlutterMain; @@ -122,9 +120,16 @@ public Registrar registrarFor(String pluginKey) { } @Override + public boolean onRequestPermissionsResult( + int requestCode, String[] permissions, int[] grantResults) { + return flutterView.getPluginRegistry().onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + @Deprecated public boolean onRequestPermissionResult( int requestCode, String[] permissions, int[] grantResults) { - return flutterView.getPluginRegistry().onRequestPermissionResult(requestCode, permissions, grantResults); + return onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override diff --git a/shell/platform/android/io/flutter/app/FlutterActivityEvents.java b/shell/platform/android/io/flutter/app/FlutterActivityEvents.java index 728bc90eb7f08..cc62327ba3e89 100644 --- a/shell/platform/android/io/flutter/app/FlutterActivityEvents.java +++ b/shell/platform/android/io/flutter/app/FlutterActivityEvents.java @@ -9,6 +9,7 @@ import android.os.Bundle; import io.flutter.plugin.common.PluginRegistry.ActivityResultListener; import io.flutter.plugin.common.PluginRegistry.RequestPermissionResultListener; +import io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener; /** * A collection of Android {@code Activity} methods that are relevant to the @@ -21,7 +22,10 @@ * {@code FlutterActivity}.

*/ public interface FlutterActivityEvents - extends ComponentCallbacks2, ActivityResultListener, RequestPermissionResultListener { + extends ComponentCallbacks2, + ActivityResultListener, + RequestPermissionResultListener, + RequestPermissionsResultListener { /** * @see android.app.Activity#onCreate(android.os.Bundle) */ diff --git a/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java b/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java index 3521ccc624cd1..cc8325df974e8 100644 --- a/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java +++ b/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java @@ -113,7 +113,7 @@ protected void onPostResume() { // @Override - added in API level 23 public void onRequestPermissionsResult( int requestCode, String[] permissions, int[] grantResults) { - eventDelegate.onRequestPermissionResult(requestCode, permissions, grantResults); + eventDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override diff --git a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java index b755547a3a1ef..b4cde7702139e 100644 --- a/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java +++ b/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java @@ -21,6 +21,7 @@ public class FlutterPluginRegistry implements PluginRegistry, PluginRegistry.RequestPermissionResultListener, + PluginRegistry.RequestPermissionsResultListener, PluginRegistry.ActivityResultListener, PluginRegistry.NewIntentListener, PluginRegistry.UserLeaveHintListener, @@ -33,7 +34,7 @@ public class FlutterPluginRegistry private FlutterView mFlutterView; private final Map mPluginMap = new LinkedHashMap<>(0); - private final List mRequestPermissionResultListeners = new ArrayList<>(0); + private final List mRequestPermissionsResultListeners = new ArrayList<>(0); private final List mActivityResultListeners = new ArrayList<>(0); private final List mNewIntentListeners = new ArrayList<>(0); private final List mUserLeaveHintListeners = new ArrayList<>(0); @@ -113,9 +114,21 @@ public Registrar publish(Object value) { } @Override + @Deprecated public Registrar addRequestPermissionResultListener( - RequestPermissionResultListener listener) { - mRequestPermissionResultListeners.add(listener); + final RequestPermissionResultListener listener) { + return addRequestPermissionsResultListener(new RequestPermissionsResultListener() { + @Override + public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + return listener.onRequestPermissionResult(requestCode, permissions, grantResults); + } + }); + } + + @Override + public Registrar addRequestPermissionsResultListener( + RequestPermissionsResultListener listener) { + mRequestPermissionsResultListeners.add(listener); return this; } @@ -145,15 +158,21 @@ public Registrar addViewDestroyListener(ViewDestroyListener listener) { } @Override - public boolean onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) { - for (RequestPermissionResultListener listener : mRequestPermissionResultListeners) { - if (listener.onRequestPermissionResult(requestCode, permissions, grantResults)) { + public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + for (RequestPermissionsResultListener listener : mRequestPermissionsResultListeners) { + if (listener.onRequestPermissionsResult(requestCode, permissions, grantResults)) { return true; } } return false; } + @Deprecated + @Override + public boolean onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) { + return onRequestPermissionsResult(requestCode, permissions, grantResults); + } + @Override public boolean onActivityResult(int requestCode, int resultCode, Intent data) { for (ActivityResultListener listener : mActivityResultListeners) { diff --git a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java index 9c4ec0cade0ee..d06e64183c675 100644 --- a/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java +++ b/shell/platform/android/io/flutter/plugin/common/PluginRegistry.java @@ -115,6 +115,16 @@ interface Registrar { */ Registrar publish(Object value); + /** + * Adds a callback allowing the plugin to take part in handling incoming + * calls to {@link Activity#onRequestPermissionsResult(int, String[], int[])} + * or {android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int, String[], int[])}. + * + * @param listener a {@link RequestPermissionsResultListener} callback. + * @return this {@link Registrar}. + */ + Registrar addRequestPermissionsResultListener(RequestPermissionsResultListener listener); + /** * Adds a callback allowing the plugin to take part in handling incoming * calls to {@link Activity#onRequestPermissionsResult(int, String[], int[])} @@ -122,7 +132,12 @@ interface Registrar { * * @param listener a {@link RequestPermissionResultListener} callback. * @return this {@link Registrar}. + + * @deprecated on 2018-01-02 because of misspelling. This method will be made unavailable + * on 2018-02-06 (or at least four weeks after the deprecation is released). Use + * {@link #addRequestPermissionsResultListener(RequestPermissionsResultListener)} instead. */ + @Deprecated Registrar addRequestPermissionResultListener(RequestPermissionResultListener listener); /** @@ -163,13 +178,32 @@ interface Registrar { } /** - * Delegate interface for handling results of permission requests on + * Delegate interface for handling result of permissions requests on * behalf of the main {@link Activity}. */ + interface RequestPermissionsResultListener { + /** + * @return true if the result has been handled. + */ + boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults); + } + + /** + * Delegate interface for handling result of permissions requests on + * behalf of the main {@link Activity}. + * + * Deprecated on 2018-01-02 because of misspelling. This interface will be made + * unavailable on 2018-02-06 (or at least four weeks after the deprecation is released). + * Use {@link RequestPermissionsResultListener} instead. + */ interface RequestPermissionResultListener { /** * @return true if the result has been handled. + * @deprecated on 2018-01-02 because of misspelling. This method will be made + * unavailable on 2018-02-06 (or at least four weeks after the deprecation is released). + * Use {@link RequestPermissionsResultListener} instead. */ + @Deprecated boolean onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults); }