-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathandroidhelper.cpp
More file actions
44 lines (38 loc) · 1.58 KB
/
androidhelper.cpp
File metadata and controls
44 lines (38 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "androidhelper.h"
#include <QFile>
#include <QtAndroid>
bool checkPermission(QString permissionstr) {
auto permission = QAndroidJniObject::getStaticObjectField<jstring>(
"android/Manifest$permission", permissionstr.toStdString().c_str());
auto request = QtAndroid::checkPermission(permission.toString());
if (request == QtAndroid::PermissionResult::Denied) {
auto resultHash = QtAndroid::requestPermissionsSync(
QStringList() << permission.toString());
if (resultHash[permission.toString()] ==
QtAndroid::PermissionResult::Denied) {
return false;
}
}
return true;
}
QImage imageFromContentUrl(const QUrl &ImageUrl) {
auto jmode = QAndroidJniObject::fromString(QLatin1String("r"));
auto jpath =
QAndroidJniObject::fromString(QLatin1String(ImageUrl.url().toLatin1()));
auto uri = QAndroidJniObject::callStaticObjectMethod(
"android/net/Uri", "parse", "(Ljava/lang/String;)Landroid/net/Uri;",
jpath.object<jstring>());
auto contentResolver = QtAndroid::androidActivity().callObjectMethod(
"getContentResolver", "()Landroid/content/ContentResolver;");
auto parcelFileDescriptor = contentResolver.callObjectMethod(
"openFileDescriptor",
"(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;",
uri.object<jobject>(), jmode.object<jobject>());
QFile file;
file.open((parcelFileDescriptor.callMethod<jint>("getFd", "()I")),
QIODevice::ReadOnly);
QImage image;
image.loadFromData(file.readAll());
parcelFileDescriptor.callMethod<void>("close", "()V");
return image;
}