summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Achtelik <mike.achtelik@gmail.com>2021-06-24 13:48:38 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-16 13:01:16 +0000
commit2e480cdc6efaee42f80b13d2640b325e09b598e3 (patch)
tree603211c37c5f339bdd05e9434fdf6b505b509ed6 /src
parentc717a78ab0ce87011e761b6fee55b06c4fc44a72 (diff)
Android: Fix unnecessary clipboard data access
Android 12 introduced a notification which is shown to the user each time the app accesses the clipboard via getPrimaryClip. Currently this notification is triggered, even if we just want to check, if some clipboard data exists. So lets not get the actual data and instead use getPrimaryClipDescription to check for the existence of the correct mime type in the clipboard. Change-Id: I4800f5545ab46b7f6cade0ce9d78c04b50ae96cf Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 5a7f4c1f4964a4bf6595002478fbcd474cedd8a6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java19
1 files changed, 7 insertions, 12 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 45cdd6e941..66f19df9a4 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
@@ -65,6 +65,7 @@ import android.os.Looper;
import android.content.ClipboardManager;
import android.content.ClipboardManager.OnPrimaryClipChangedListener;
import android.content.ClipData;
+import android.content.ClipDescription;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.view.ContextMenu;
@@ -1020,10 +1021,8 @@ public class QtNative
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
- ClipData primaryClip = m_clipboardManager.getPrimaryClip();
- for (int i = 0; i < primaryClip.getItemCount(); ++i)
- if (primaryClip.getItemAt(i).getText() != null)
- return true;
+ ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
+ return primaryClipDescription.hasMimeType("text/*");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);
@@ -1078,10 +1077,8 @@ public class QtNative
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
- ClipData primaryClip = m_clipboardManager.getPrimaryClip();
- for (int i = 0; i < Objects.requireNonNull(primaryClip).getItemCount(); ++i)
- if (primaryClip.getItemAt(i).getHtmlText() != null)
- return true;
+ ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
+ return primaryClipDescription.hasMimeType("text/html");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);
@@ -1117,10 +1114,8 @@ public class QtNative
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
- ClipData primaryClip = m_clipboardManager.getPrimaryClip();
- for (int i = 0; i < primaryClip.getItemCount(); ++i)
- if (primaryClip.getItemAt(i).getUri() != null)
- return true;
+ ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
+ return primaryClipDescription.hasMimeType("text/uri-list");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);