How to disable the,Paste,selectALL for the editText view - android

I have an login fragment. For password (Edittext), I need to disable the Paste and select ALL options.
I tried setCustomSelectionActionModeCallback and "set longClickable " but they are not working.
Any suggestions Thanks in advance

edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
Returning false from onCreateActionMode(ActionMode, Menu) will prevent the action mode from being started(Select All, Cut, Copy and Paste actions).

This will definitely work
All you need to do is add mode.finish() in onCreateActionMode()
mEntryText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; }
public void onDestroyActionMode(ActionMode mode) { }
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
/* This is done to solve the issue of SELECT ALL PASTE etc., showing up.
mode.finish() should not be called at this point. If called, it will throw
this exception "E/DecorView[]: Destroying unexpected ActionMode instance of TYPE_FLOATING;
com.android.internal.view.FloatingActionMode#2e022bc was not the current floating action mode! Expected null"
This makes that class not to execute the rest of the code and hence the FloatingAction is never created!
I wish the the author of FloatingActionMode class gave me a method to just stop showing it. menu.clear()
is supposed to do it, but doesn't do.
*/
mode.finish(); // menu.close(); menu.clear();
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; }
});

Related

How to Disable Only Cut option From EditText?

i have two EditText for UserName and Password. first UserName EditText will be Visible.it will check Valid UserName.Then, Password EditText will be visible. i want user to copy the username but don't want to cut.
how to disable the Cut Option.
But below code Disable all the Option.
Code :
#Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
return false;
}
#Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
#Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
return false;
}
#Override
public void onDestroyActionMode(ActionMode actionMode) {
}
});
First set a customSelectionActionModeCallback.
You could identify the cut option by its id: android.R.id.cut
So your code in the onCreateActionMode from the ActionMode.Callback would look like this:
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuItem menuItem = menu.findItem(android.R.id.cut);
if (menuItem != null) {
menuItem.setVisible(false);
}
return true;
}
Or you could even remove it by using menu.removeItem(android.R.id.cut).
Also null-check for menu.findItem(android.R.id.cut) because it might return null when calling setVisible on it.

How to disable copy paste in android

I am working in xamarin forms to create an app for android. I want to disable the copy/paste functionality of textbox in android. I used the following line to disable it
Control.LongClickable = false;
But its working only in case of if user press the text for long time. But if user click multiple times on text, he becomes able to copy paste. How I can completely disable the copy paste functionality of textbox?
In eclipse this can be used, Just check will it be helpful.
textView.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
// after onCreateView and findById you you_editText view;
you_editText.CustomSelectionActionModeCallback = new CopyPasteDisabler();
class CopyPasteDisabler : Java.Lang.Object, Android.Views.ActionMode.ICallback
{
public bool OnActionItemClicked(Android.Views.ActionMode mode, IMenuItem item) => false;
public bool OnCreateActionMode(Android.Views.ActionMode mode, IMenu menu) => false;
public void OnDestroyActionMode(Android.Views.ActionMode mode) {}
public bool OnPrepareActionMode(Android.Views.ActionMode mode, IMenu menu) => false;
}

Android: How can you stop Screenshots or copying text

I want to stop a user from copying text or images from my screen to any text editor.
Also I want to prevent taking screen shots of activities.
How can I do it programmatically in Android?
In terms of screenshots - try using FLAG_SECURE - as the docs state
Window flag: treat the content of the window as secure, preventing it from appearing in screenshots or from being viewed on non-secure displays.
You can use it in an Activity as follows:
public class NonScreenshotableActivity extends Activity {
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Place this before setting layout but after calling super method
getWindow().setFlags(LayoutParams.FLAG_SECURE,
LayoutParams.FLAG_SECURE);
setContentView(R.layout.my_layout);
//Rest of your activity code here
}
}
You can also stop any EditText fields from being copy/pasteable by using the following:
yourEditText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
You can see the docs for ActionMode.Callback() for more on this but it essentially aborts loading the copy/paste dialog
Ed George answers the first part!
Here is the Second half
If you are using API level 11 or above then you can stop copy,paste,cut and custom context menus from appearing by.
edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
Returning false from onCreateActionMode(ActionMode, Menu) will prevent the action mode from being started(Select All, Cut, Copy and Paste actions).

How to disable the cut copy paste option in Edit Text in HTC device in OS 2.x

In HTC device with OS 2.x we want to disable the cut copy paste option on the edit text.
How can we disable this?
Help Appreciated.
Thanks!
Bhushan
Try Below code:
edtUserName.setCustomSelectionActionModeCallback(new Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});

Android EditText without QuickAction

My problem is, when I select some text in an EditText (version 4.0.3), a QuickAction (showing several options like cut, copy, paste) will appear near the selected text. I Don't need this popup, so how can I turn it off or something like that? Thanks
edittext.setCustomSelectionActionModeCallback(new Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; }
public void onDestroyActionMode(ActionMode mode) { }
public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } });
you can add callback for your editText like this :
YOUR_EDITTEXT_OBJECT.setCustomSelectionActionModeCallback(new Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});

Categories

Resources