你的问题的原因是未知的。因为它适用于我测试过的设备(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,作为一种解决方法,coerceToText()
如果调用推荐的 API 返回 null,则可以使用此方法的部分源代码(特别是 method ):
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);
}
}
}