項目裏有一個功能要求獲取剪切板上的內容,原代碼如下:
@Nullable
public static String getClipboardContentTest(Context context) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (cm != null) {
ClipData data = cm.getPrimaryClip();
if (data != null) {
ClipData.Item item = data.getItemAt(0);
if (item != null) {
//TODO item.getText()部分手機可能會在剪切板沒有相關的文本內容返回null
return item.getText().toString();
}
}
}
return null;
}
監測到item.getText().toString()這一行產生了相關的錯誤信息:
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
查了一些相關的資料修復了上面的錯誤,修復後的獲取剪切板內容代碼如下:
/**
* 獲取剪切板上的內容
*/
@Nullable
public static String getClipboardContent(Context context) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (cm != null) {
ClipData data = cm.getPrimaryClip();
if (data != null && data.getItemCount() > 0) {
ClipData.Item item = data.getItemAt(0);
if (item != null) {
CharSequence sequence = item.coerceToText(context);
if (sequence != null) {
return sequence.toString();
}
}
}
}
return null;
}