How to stop youtube video playing in Android webview?

See the following post about WebView threads never stopping

Essentially you’ll need to call the WebView’s onPause method from your own Activity’s onPause method.

The only trick with this is that you cannot call the WebView’s onPause method directly because it is hidden. Therefore you will need to call it indirectly via reflection. The following code should get you started on setting up your own Activity’s onPause method:

@Override
public void onPause() {
    super.onPause();

    try {
        Class.forName("android.webkit.WebView")
                .getMethod("onPause", (Class[]) null)
                            .invoke(webview, (Object[]) null);

    } catch(ClassNotFoundException cnfe) {
        ...
    } catch(NoSuchMethodException nsme) {
        ...
    } catch(InvocationTargetException ite) {
        ...
    } catch (IllegalAccessException iae) {
        ...
    }
}

Note that the variable ‘webview’ in the try block above is a private instance variable for the class and is assigned to in the Activity’s onCreate method.

Leave a Comment