1. 程式人生 > >安卓5.0以後禁止文字編輯框EditText複製、貼上、選擇、全選等功能的幾種可行性方法探索

安卓5.0以後禁止文字編輯框EditText複製、貼上、選擇、全選等功能的幾種可行性方法探索

現在各手機廠商深度化定製rom,在谷歌原生系統上重新開發了很多功能,比如EditText的長按或雙擊事件彈出框支援線上翻譯,搜尋等,如果你的專案出於資訊保安考慮想禁止這些功能實現的話,你會發現網上現有的方法都無法做到適配所有手機,總有那麼幾款漏網之魚,非常頭疼。

下面介紹兩種自己探索出來的方法,可以完美解決市面上的大部分手機(本人測試過的都可以)

方法一.自定義EditText,重寫getDefaultMovementMethod()方法,返回null或者new BaseMovementMethod();這樣EditText就失去了文字選擇器,使用自定義的EditText替代專案中的EditText即可,詳細方法不再贅述。

方法二.控制EditText是否可以觸控獲焦

直接貼程式碼:

EditText etContent;

onResume(){

    // 編輯框禁止觸發長按事件
    etContent.setLongClickable(false);
    // 禁止編輯框橫屏時彈出另外一個編輯介面
    etContent.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    // 編輯框點選事件
    etContent.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            InputMethodManager imm = (InputMethodManager) etContent.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            // 允許編輯框觸控獲焦
            etContent.setFocusableInTouchMode(true);
            etContent.requestFocus();
            // 編輯框強制彈出鍵盤
            imm.showSoftInput(etContent, imm.SHOW_FORCED);
            // 禁止編輯框觸控獲焦
            etContent.setFocusableInTouchMode(false);
        }
    });
}