Some fixes in the platform permission helper for android
This commit is contained in:
parent
67ec2eeab1
commit
b8e9dd7e45
@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QAndroidIntent>
|
||||||
|
|
||||||
PlatformPermissionsAndroid * PlatformPermissionsAndroid::s_instance = nullptr;
|
PlatformPermissionsAndroid * PlatformPermissionsAndroid::s_instance = nullptr;
|
||||||
|
|
||||||
|
#define FLAG_ACTIVITY_NEW_TASK 0x10000000
|
||||||
|
|
||||||
QHash<PlatformPermissions::Permission, QStringList> permissionMap = {
|
QHash<PlatformPermissions::Permission, QStringList> permissionMap = {
|
||||||
// TODO: Once QtBluetooth does not request the COARSE_LOCATION for Bluetooth any more, remove it from here. The new Bluetooth permissions would be enough.
|
// TODO: Once QtBluetooth does not request the COARSE_LOCATION for Bluetooth any more, remove it from here. The new Bluetooth permissions would be enough.
|
||||||
{PlatformPermissions::PermissionBluetooth, {"android.permission.BLUETOOTH_SCAN", "android.permission.BLUETOOTH_CONNECT", "android.permission.ACCESS_COARSE_LOCATION"}},
|
{PlatformPermissions::PermissionBluetooth, {"android.permission.BLUETOOTH_SCAN", "android.permission.BLUETOOTH_CONNECT", "android.permission.ACCESS_COARSE_LOCATION"}},
|
||||||
@ -24,6 +27,7 @@ PlatformPermissionsAndroid::PlatformPermissionsAndroid(QObject *parent)
|
|||||||
emit bluetoothPermissionChanged();
|
emit bluetoothPermissionChanged();
|
||||||
emit locationPermissionChanged();
|
emit locationPermissionChanged();
|
||||||
emit backgroundLocationPermissionChanged();
|
emit backgroundLocationPermissionChanged();
|
||||||
|
emit notificationsPermissionChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -38,7 +42,13 @@ void PlatformPermissionsAndroid::requestPermission(PlatformPermissions::Permissi
|
|||||||
|
|
||||||
void PlatformPermissionsAndroid::openPermissionSettings()
|
void PlatformPermissionsAndroid::openPermissionSettings()
|
||||||
{
|
{
|
||||||
QtAndroid::androidActivity().callMethod<void>("openPermissionSettings", "()V");
|
QAndroidJniObject packageName = QtAndroid::androidContext().callObjectMethod("getPackageName", "()Ljava/lang/String;");
|
||||||
|
QString packageUri = "package:" + packageName.toString();
|
||||||
|
QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri", "parse", "(Ljava/lang/String;)Landroid/net/Uri;", QAndroidJniObject::fromString(packageUri).object());
|
||||||
|
QAndroidIntent intent = QAndroidIntent("android.settings.APPLICATION_DETAILS_SETTINGS");
|
||||||
|
intent.handle().callObjectMethod("setData", "(Landroid/net/Uri;)Landroid/content/Intent;", uri.object());
|
||||||
|
intent.handle().callObjectMethod("addFlags", "(I)Landroid/content/Intent;", FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
QtAndroid::androidContext().callMethod<void>("startActivity", "(Landroid/content/Intent;)V", intent.handle().object());
|
||||||
}
|
}
|
||||||
|
|
||||||
PlatformPermissions::PermissionStatus PlatformPermissionsAndroid::checkPermission(Permission permission) const
|
PlatformPermissions::PermissionStatus PlatformPermissionsAndroid::checkPermission(Permission permission) const
|
||||||
@ -61,5 +71,6 @@ void PlatformPermissionsAndroid::permissionResultCallback(const QtAndroid::Permi
|
|||||||
emit s_instance->bluetoothPermissionChanged();
|
emit s_instance->bluetoothPermissionChanged();
|
||||||
emit s_instance->locationPermissionChanged();
|
emit s_instance->locationPermissionChanged();
|
||||||
emit s_instance->backgroundLocationPermissionChanged();
|
emit s_instance->backgroundLocationPermissionChanged();
|
||||||
|
emit s_instance->notificationsPermissionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user