summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtNative.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index b077014b81..e019797cf6 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -117,6 +117,7 @@ public class QtNative
public static QtThread m_qtThread = new QtThread();
private static HashMap<String, Uri> m_cachedUris = new HashMap<String, Uri>();
private static ArrayList<String> m_knownDirs = new ArrayList<String>();
+ private static final String NoPermissionErrorMessage = "No permissions to open Uri";
private static final Runnable runPendingCppRunnablesRunnable = new Runnable() {
@Override
@@ -194,11 +195,10 @@ public class QtNative
return iterUri;
}
- // Android 6 and earlier could still manage to open the file so we can return the
- // parsed uri here
- if (Build.VERSION.SDK_INT < 24)
- return parsedUri;
- return null;
+ // if we only have transient permissions on uri all the above will fail,
+ // but we will be able to read the file anyway, so continue with uri here anyway
+ // and check for SecurityExceptions later
+ return parsedUri;
} catch (SecurityException e) {
e.printStackTrace();
return null;
@@ -245,7 +245,7 @@ public class QtNative
int error = -1;
if (uri == null) {
- Log.e(QtTAG, "openFdForContentUrl(): No permissions to open Uri");
+ Log.e(QtTAG, "openFdForContentUrl(): " + NoPermissionErrorMessage);
return error;
}
@@ -255,12 +255,13 @@ public class QtNative
return fdDesc.detachFd();
} catch (FileNotFoundException e) {
e.printStackTrace();
- return error;
} catch (IllegalArgumentException e) {
Log.e(QtTAG, "openFdForContentUrl(): Invalid Uri");
e.printStackTrace();
- return error;
+ } catch (SecurityException e) {
+ Log.e(QtTAG, NoPermissionErrorMessage);
}
+ return error;
}
public static long getSize(Context context, String contentUrl)
@@ -271,7 +272,7 @@ public class QtNative
uri = getUriWithValidPermission(context, contentUrl, "r");
if (uri == null) {
- Log.e(QtTAG, "getSize(): No permissions to open Uri");
+ Log.e(QtTAG, NoPermissionErrorMessage);
return size;
} else if (!m_cachedUris.containsKey(contentUrl)) {
m_cachedUris.put(contentUrl, uri);
@@ -289,12 +290,13 @@ public class QtNative
} catch (IllegalArgumentException e) {
Log.e(QtTAG, "getSize(): Invalid Uri");
e.printStackTrace();
- return size;
} catch (UnsupportedOperationException e) {
Log.e(QtTAG, "getSize(): Unsupported operation for given Uri");
e.printStackTrace();
- return size;
+ } catch (SecurityException e) {
+ Log.e(QtTAG, NoPermissionErrorMessage);
}
+ return size;
}
public static boolean checkFileExists(Context context, String contentUrl)
@@ -304,7 +306,7 @@ public class QtNative
if (uri == null)
uri = getUriWithValidPermission(context, contentUrl, "r");
if (uri == null) {
- Log.e(QtTAG, "checkFileExists(): No permissions to open Uri");
+ Log.e(QtTAG, NoPermissionErrorMessage);
return exists;
} else {
if (!m_cachedUris.containsKey(contentUrl))
@@ -322,12 +324,13 @@ public class QtNative
} catch (IllegalArgumentException e) {
Log.e(QtTAG, "checkFileExists(): Invalid Uri");
e.printStackTrace();
- return exists;
} catch (UnsupportedOperationException e) {
Log.e(QtTAG, "checkFileExists(): Unsupported operation for given Uri");
e.printStackTrace();
- return false;
+ } catch (SecurityException e) {
+ Log.e(QtTAG, NoPermissionErrorMessage);
}
+ return exists;
}
public static boolean checkIfWritable(Context context, String contentUrl)
@@ -345,7 +348,7 @@ public class QtNative
uri = getUriWithValidPermission(context, contentUrl, "r");
}
if (uri == null) {
- Log.e(QtTAG, "isDir(): No permissions to open Uri");
+ Log.e(QtTAG, NoPermissionErrorMessage);
return isDir;
} else {
if (!m_cachedUris.containsKey(contentUrl))
@@ -375,12 +378,13 @@ public class QtNative
} catch (IllegalArgumentException e) {
Log.e(QtTAG, "checkIfDir(): Invalid Uri");
e.printStackTrace();
- return false;
} catch (UnsupportedOperationException e) {
Log.e(QtTAG, "checkIfDir(): Unsupported operation for given Uri");
e.printStackTrace();
- return false;
+ } catch (SecurityException e) {
+ Log.e(QtTAG, NoPermissionErrorMessage);
}
+ return false;
}
public static String[] listContentsFromTreeUri(Context context, String contentUrl)
{
@@ -944,13 +948,13 @@ public class QtNative
return m_activityDelegate.isKeyboardVisible() && !m_isKeyboardHiding;
}
- private static void notifyAccessibilityLocationChange()
+ private static void notifyAccessibilityLocationChange(final int viewId)
{
runAction(new Runnable() {
@Override
public void run() {
if (m_activityDelegate != null) {
- m_activityDelegate.notifyAccessibilityLocationChange();
+ m_activityDelegate.notifyAccessibilityLocationChange(viewId);
}
}
});