Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QtContentFileEngine.java
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4package org.qtproject.qt.android;
5
6import android.content.ContentResolver;
7import android.content.Context;
8import android.content.Intent;
9import android.content.pm.PackageManager;
10
11import android.database.Cursor;
12
13import android.net.Uri;
14
15import android.util.Log;
16
17import android.os.ParcelFileDescriptor;
18import android.os.Process;
19
20import java.util.Arrays;
21import java.util.stream.Collectors;
22
23class QtContentFileEngine
24{
25 private static String QtTag = "QtContentFileEngine";
26
27 static Cursor query(ContentResolver contentResolver, Uri uri, String[] projection,
28 String selection, String[] selectionArgs, String sortOrder)
29 {
30 try {
31 // Check for read permission before doing any query
32 if (!hasPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION))
33 return null;
34
35 return contentResolver.query(uri, projection, selection, selectionArgs, sortOrder);
36 } catch (Exception ignored) {
37 // Uncomment for debug only
38 // String projections = Arrays.stream(projection).collect(Collectors.joining(", "));
39 // Log.w(QtTag, "Query for [" + projections + "] failed with " + ignored);
40 }
41
42 return null;
43 }
44
45 static ParcelFileDescriptor openFileDescriptor(ContentResolver contentResolver,
46 Uri uri, String openMode)
47 {
48 try {
49 int permissions = 0;
50 if (openMode.contains("w"))
51 permissions |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
52 if (openMode.contains("r"))
53 permissions |= Intent.FLAG_GRANT_READ_URI_PERMISSION;
54 // Check for relevant permission before attempting to obtain a file description
55 if (!hasPermission(uri, permissions)) {
56 Log.w(QtTag, "openFileDescriptor(): No permission for URI " + uri);
57 return null;
58 }
59
60 return contentResolver.openFileDescriptor(uri, openMode);
61 } catch (Exception e) {
62 Log.w(QtTag, "openFileDescriptor() failed with " + e);
63 }
64
65 return null;
66 }
67
68 static boolean hasPermission(Uri uri, int permission)
69 {
70 Context context = QtNative.getContext();
71 int status = context.checkUriPermission(uri, Process.myPid(), Process.myUid(), permission);
72
73 return status == PackageManager.PERMISSION_GRANTED;
74 }
75}
QPainter Context
static const QString context()
Definition java.cpp:398
GLenum query
[36]