Handle exceptions when accessing android clipboard
In some circumstances android throws an exception or returns null, when trying to access the clipboard. Fixes: QTBUG-80689 Change-Id: I92c134e2a002fc648ff966e15a19eb3307c428a1 Reviewed-by: BogDan Vatra <bogdan@kdab.com> (cherry picked from commit 287b570ad5c00eb491f86eab0c4b8d3f6d96f666) Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
ca0dedf9ea
commit
08d6cb7673
@ -724,28 +724,37 @@ public class QtNative
|
||||
|
||||
public static boolean hasClipboardText()
|
||||
{
|
||||
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;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String getClipboardText()
|
||||
{
|
||||
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 primaryClip.getItemAt(i).getText().toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private static void updatePrimaryClip(ClipData clipData)
|
||||
{
|
||||
try {
|
||||
if (m_usePrimaryClip) {
|
||||
ClipData clip = m_clipboardManager.getPrimaryClip();
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
@ -773,6 +782,9 @@ public class QtNative
|
||||
m_clipboardManager.setPrimaryClip(clipData);
|
||||
m_usePrimaryClip = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to set clipboard data", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void setClipboardHtml(String text, String html)
|
||||
@ -785,23 +797,31 @@ public class QtNative
|
||||
|
||||
public static boolean hasClipboardHtml()
|
||||
{
|
||||
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).getHtmlText() != null)
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String getClipboardHtml()
|
||||
{
|
||||
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).getHtmlText() != null)
|
||||
return primaryClip.getItemAt(i).getHtmlText().toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@ -816,24 +836,32 @@ public class QtNative
|
||||
|
||||
public static boolean hasClipboardUri()
|
||||
{
|
||||
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;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String[] getClipboardUris()
|
||||
{
|
||||
ArrayList<String> uris = new ArrayList<String>();
|
||||
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)
|
||||
uris.add(primaryClip.getItemAt(i).getUri().toString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to get clipboard data", e);
|
||||
}
|
||||
String[] strings = new String[uris.size()];
|
||||
strings = uris.toArray(strings);
|
||||
return strings;
|
||||
|
Loading…
x
Reference in New Issue
Block a user