Android 如何禁用应用程序所选文本的共享
我的android应用程序中有一个Android 如何禁用应用程序所选文本的共享,android,webview,android-edittext,android-sharing,Android,Webview,Android Edittext,Android Sharing,我的android应用程序中有一个WebView和一些EditTexts。当我选择文本时,我可以选择共享此文本。 现在我想在我的整个应用程序中禁用此文本共享功能。 最可靠的方法是什么?对于web视图,有一种很好的方法[setDisabledActionModeMenuItems][1],但它仅适用于android sdk 24+版本 我是这样使用反射的 private void disableSelectedTextOptions() { // TODO Method setDisa
WebView
和一些EditText
s。当我选择文本时,我可以选择共享此文本。
现在我想在我的整个应用程序中禁用此文本共享功能。
最可靠的方法是什么?对于web视图,有一种很好的方法
[setDisabledActionModeMenuItems][1]
,但它仅适用于android sdk 24+版本
我是这样使用反射的
private void disableSelectedTextOptions() {
// TODO Method setDisabledActionModeMenuItems should be called directly after project will be migrated to SDK 24+
if (Build.VERSION.SDK_INT < 24) return;
Method method = null;
try {
method = webSettings.getClass().getMethod("setDisabledActionModeMenuItems", int.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
try {
method.invoke(webSettings,
/*WebSettings.MENU_ITEM_SHARE*/ 1 |
/*WebSettings.MENU_ITEM_WEB_SEARCH*/ 2 |
/*WebSettings.MENU_ITEM_PROCESS_TEXT*/ 4);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public static void removeShareOption(TextView tv){
tv.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return true;
}
@Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
menu.removeItem(/*android.R.id.shareText*/0x01020035);
menu.removeItem(/* Translate */0);
return true;
}
@Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override public void onDestroyActionMode(ActionMode mode) {
}
});
}