UnsupportedOperationException on Android 3.2 when selecting text (AppCompat 21.0.3)

I am only going to release my application after upgrading to AppCompat 21.0.3. When testing on different emulators, I found that on Android 3.2 a crash occurred every time I tried to select text in my WebView.

This is not like emulator 2.3.3 or 4.0.3 (in 2.3.3 it selects the text and allows me to touch the copy. In 4.0.3 it shows the action mode, which I also expected 3.2). Does anyone come across something similar? Is there any fix, or do we need to wait for the AppCompat update?

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.UnsupportedOperationException
        at android.support.v7.internal.view.menu.MenuWrapperFactory.wrapSupportMenu(MenuWrapperFactory.java:39)
        at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.getMenuWrapper(SupportActionModeWrapper.java:179)
        at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:154)
        at android.support.v7.app.ActionBarActivityDelegateBase$ActionModeCallbackWrapper.onCreateActionMode(ActionBarActivityDelegateBase.java:1297)
        at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionModeFromWindow(ActionBarActivityDelegateBase.java:648)
        at android.support.v7.app.ActionBarActivityDelegate$1.startActionMode(ActionBarActivityDelegate.java:99)
        at android.support.v7.widget.WindowCallbackWrapper.startActionMode(WindowCallbackWrapper.java:69)
        at android.support.v7.internal.app.ToolbarActionBar.startActionMode(ToolbarActionBar.java:206)
        at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionMode(ActionBarActivityDelegateBase.java:581)
        at android.support.v7.app.ActionBarActivityDelegateHC.startActionModeForChild(ActionBarActivityDelegateHC.java:62)
        at android.support.v7.internal.widget.NativeActionModeAwareLayout.startActionModeForChild(NativeActionModeAwareLayout.java:44)
        at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
        at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
        at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
        at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
        at android.view.View.startActionMode(View.java:3157)
        at android.webkit.WebView.setUpSelect(WebView.java:4935)
        at android.webkit.WebView.selectText(WebView.java:3957)
        at android.webkit.WebView.selectText(WebView.java:3950)
        at android.webkit.WebView.performLongClick(WebView.java:3939)
        at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:7752)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:132)
        at android.app.ActivityThread.main(ActivityThread.java:4123)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:491)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
        at dalvik.system.NativeStart.main(Native Method)

The same thing happens when I try to select text from SearchView in the toolbar.

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.UnsupportedOperationException
        at android.support.v7.internal.view.menu.MenuWrapperFactory.wrapSupportMenu(MenuWrapperFactory.java:39)
        at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.getMenuWrapper(SupportActionModeWrapper.java:179)
        at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:154)
        ...
        at android.view.View.startActionMode(View.java:3157)
        at android.widget.TextView.startSelectionActionMode(TextView.java:8306)
        at android.widget.TextView.performLongClick(TextView.java:8206)
        at android.view.View$CheckForLongPress.run(View.java:11910)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:132)
        at android.app.ActivityThread.main(ActivityThread.java:4123)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:491)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
        at dalvik.system.NativeStart.main(Native Method)

: AppCompat v22. - , , :

// There is a bug in Android 3.0-3.2 that causes selecting text to crash.
// Temporary fix is to disable long-click/text-selection for API 11-13.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2) {
    myWebView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            return true;
        }
    });
    myWebView.setLongClickable(false);
}
+4

Source: https://habr.com/ru/post/1568803/


All Articles