diff options
author | Mike Achtelik <mike.achtelik@gmail.com> | 2021-06-24 13:48:38 +0200 |
---|---|---|
committer | Mike Achtelik <mike.achtelik@gmail.com> | 2021-07-14 17:56:01 +0200 |
commit | 5a7f4c1f4964a4bf6595002478fbcd474cedd8a6 (patch) | |
tree | 12c6bf21615ef07f93f35bfd10b43c3cf299fd85 /src | |
parent | 70e4a70265d6066ef04c7ed5700dadade72ef44c (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.
Pick-to: 6.2 6.1 5.15 5.12
Change-Id: I4800f5545ab46b7f6cade0ce9d78c04b50ae96cf
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtNative.java | 19 |
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 d221ff602e..fcc14783db 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -66,6 +66,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.util.DisplayMetrics; @@ -1045,10 +1046,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); @@ -1103,10 +1102,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); @@ -1142,10 +1139,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); |