diff options
author | BogDan Vatra <bogdan@kdab.com> | 2016-09-07 16:55:51 +0300 |
---|---|---|
committer | BogDan Vatra <bogdan@kdab.com> | 2016-09-16 12:13:29 +0000 |
commit | 31a63b69037c680101bf82a7161d4a0e5184dd86 (patch) | |
tree | 4d9c2aa085b6abf6e108e07518cb1446aee14328 /src/android/java/src/org/qtproject/qt5/android | |
parent | fdca8cb09ee330813c41fd1bd20b2795a0a30e04 (diff) |
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 <christian.stromme@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/android/java/src/org/qtproject/qt5/android')
-rw-r--r-- | src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java | 7 | ||||
-rw-r--r-- | src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java | 1 |
2 files changed, 8 insertions, 0 deletions
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) { |