android clipdata用法,android-使用getPrimaryClip()复制给出的数据给定{text / plain {NULL}}...

我在使用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());

}

更新资料

三星银河标签3中存在问题.

1bfeb06eb414885b592b4717c1208418.png

解决方法:

您的问题的原因未知.因为它可以在我测试过的设备(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);

}

}

}

标签:clipboardmanager,android

来源: https://codeday.me/bug/20191119/2036515.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值