安卓5.0以後禁止文字編輯框EditText複製、貼上、選擇、全選等功能的幾種可行性方法探索
阿新 • • 發佈:2019-02-04
現在各手機廠商深度化定製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); } }); }