diff options
Diffstat (limited to 'src/android')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtNative.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index ac67a0542f..3c26e6d4f2 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -41,6 +41,7 @@ package org.qtproject.qt.android; import java.io.File; +import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Objects; @@ -240,6 +241,37 @@ public class QtNative } } + public static ParcelFileDescriptor openParcelFdForContentUrl(Context context, String contentUrl, + String openMode) + { + Uri uri = m_cachedUris.get(contentUrl); + if (uri == null) + uri = getUriWithValidPermission(context, contentUrl, openMode); + + if (uri == null) { + Log.e(QtTAG, getCurrentMethodNameLog() + INVALID_OR_NULL_URI_ERROR_MESSAGE); + return null; + } + + try { + final ContentResolver resolver = context.getContentResolver(); + return resolver.openFileDescriptor(uri, openMode); + } catch (FileNotFoundException | IllegalArgumentException | SecurityException e) { + Log.e(QtTAG, getCurrentMethodNameLog() + e.toString()); + } + + return null; + } + + public static FileDescriptor openFdObjectForContentUrl(Context context, String contentUrl, + String openMode) + { + final ParcelFileDescriptor pfd = openParcelFdForContentUrl(context, contentUrl, openMode); + if (pfd != null) + return pfd.getFileDescriptor(); + return null; + } + public static int openFdForContentUrl(Context context, String contentUrl, String openMode) { Uri uri = m_cachedUris.get(contentUrl); |