From 31a63b69037c680101bf82a7161d4a0e5184dd86 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 7 Sep 2016 16:55:51 +0300 Subject: Say hello to Android 6+ permissions model This API was introduced by Android v23 and is used in connection with the new permission request system. From Android v23 onwards, some permissions such as Location permissions cannot only be granted via Android's Manifest files. An additional runtime check/request system was introduced which forces applications to prompt the user the first time a privileged function is called. Such user prompt responses are returned to the current application via the Activity.onRequestPermissionsResult(..) callback. This change add Qt API to nicely check & request permissions. For now this is private API which can be used to fix permission problems in other Qt compontents. Later Qt versions will introduce a public API to QtAndroidExtras. [ChangeLog][QtCore][Android] Introduced a mechanism to forward permission related callbacks on Activity objects to interested parties. Task-number: QTBUG-55035 Task-number: QTBUG-50759 Change-Id: I64ee748d741b39e35c4713ed9fdd15dd1d96dc56 Reviewed-by: Christian Stromme Reviewed-by: Alex Blasche --- .../java/src/org/qtproject/qt5/android/bindings/QtActivity.java | 7 +++++++ .../java/src/org/qtproject/qt5/android/bindings/QtApplication.java | 1 + 2 files changed, 8 insertions(+) (limited to 'src/android/java/src') diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java index 573a28e44b..22ff1738c8 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -981,4 +981,11 @@ public class QtActivity extends Activity //--------------------------------------------------------------------------- //@ANDROID-12 + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) + { + if (QtApplication.m_delegateObject != null && QtApplication.onRequestPermissionsResult != null) { + QtApplication.invokeDelegateMethod(QtApplication.onRequestPermissionsResult, requestCode , permissions, grantResults); + return; + } + } } diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java index 1078060d7f..afc0432bdd 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java @@ -64,6 +64,7 @@ public class QtApplication extends Application public static Method onKeyShortcut = null; public static Method dispatchGenericMotionEvent = null; public static Method onGenericMotionEvent = null; + public static Method onRequestPermissionsResult = null; private static String activityClassName; public static void setQtContextDelegate(Class clazz, Object listener) { -- cgit v1.2.3