Android獲取剪切板內容

項目裏有一個功能要求獲取剪切板上的內容,原代碼如下:

@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;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章