【问题标题】:Copying data giving using getPrimaryClip() giving { text/plain {NULL} }使用 getPrimaryClip() 复制数据给出 { text/plain {NULL} }
【发布时间】:2015-11-05 02:29:18
【问题描述】:

当我使用ClipData 时,我得到了{ text/plain {NULL} },但如果我使用已弃用的方法mClipboard.getText(),它工作得很好。

if (mClipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
    ClipData clipData = mClipboard.getPrimaryClip();
    ClipData.Item item = clipData.getItemAt(0);
    Log.d(TAG, clipData.toString());
    Log.d(TAG, mClipboard.getText());
}

更新

三星 Galaxy Tab 3 中存在问题。

【问题讨论】:

  • 您好,无法重现此问题。我只是复制并粘贴了您的代码,并在它按预期运行的设备上进行了测试。这是截图imgur.com/EBPsLVP如何复制数据并在真机上测试过?
  • @ProblemSlover 它即将登陆三星 Galaxy S4 和 Galaxy Tab。明天我会发布截图。
  • 我的回答对您有帮助吗?
  • @ProblemSlover 不是真的。在任何情况下ClipData.Item 都会为空。所以item.coerceToText(this)item.getText() 都是空的。

标签: android clipboardmanager


【解决方案1】:

您的问题原因未知。因为它适用于我测试过的设备(S6 5.0)。您可能想查看已弃用的getText() 方法的实现:

public CharSequence getText() {
    ClipData clip = getPrimaryClip();
    if (clip != null && clip.getItemCount() > 0) {
        return clip.getItemAt(0).coerceToText(mContext);
    }
    return null;
}

为了获取文本,它使用了 coerceToText() 方法。根据该方法的描述:

     * Turn this item into text, regardless of the type of data it
     * actually contains.

因此,我认为方法 getText() 的弃用是由于性能问题或其他原因。

无论如何。由于方法 getText() 使用未弃用的 API,作为一种解决方法,如果调用推荐的 API 返回 null,您可以使用此方法的部分源代码(特别是方法 coerceToText()):

ClipboardManager mclipboard =(ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
boolean isTextPlain = mclipboard.getPrimaryClip().getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN);
    CharSequence text = null;
if (isTextPlain){
    ClipData clipData = mclipboard.getPrimaryClip();
    ClipData.Item item = clipData.getItemAt(0);
    if (  item!= null ){
        text = item.getText();
        if (text == null){
            // taken from source of clipData.getText() method
            text =  item.coerceToText(this);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2017-03-05
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多