在做一些安全性的軟體時候常常要考慮取消 EditText 上的複製粘貼功能以確保全全性。下麵就記錄了這個方法:首先在API-11以下的版本很簡單,只需要在Xml佈局文件或者用代碼把長按屬性設置成false就可以。1 editText.setLongClickable(false); // Xml l...
在做一些安全性的軟體時候常常要考慮取消 EditText 上的複製粘貼功能以確保全全性。下麵就記錄了這個方法:
首先在API-11以下的版本很簡單,只需要在Xml佈局文件或者用代碼把長按屬性設置成false就可以。
1 editText.setLongClickable(false); // Xml layout file android:longClickable="false"
但是如果在API-11及以上的話,取消長按就不能完全有效了,最根本的是無效化選擇的操作:
1 editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() { 2 3 @Override 4 public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 5 return false; 6 } 7 8 @Override 9 public void onDestroyActionMode(ActionMode mode) { 10 11 } 12 13 @Override 14 public boolean onCreateActionMode(ActionMode mode, Menu menu) { 15 return false; 16 } 17 18 @Override 19 public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 20 return false; 21 } 22 });
最後還要註意的是,EditText在橫屏編輯的時候會出現一個新的不同的編輯界面,這個界面里還是可以複製粘貼的,因此也要取消這個額外的UI:
1 editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); // android:imeOptions="flagNoExtractUi"