@@ -103,13 +103,16 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
103103 methodChannel .setMethodCallHandler (this );
104104
105105 flutterWebViewClient = new FlutterWebViewClient (methodChannel );
106- applySettings ((Map <String , Object >) params .get ("settings" ));
106+ Map <String , Object > settings = (Map <String , Object >) params .get ("settings" );
107+ if (settings != null ) applySettings (settings );
107108
108109 if (params .containsKey (JS_CHANNEL_NAMES_FIELD )) {
109- registerJavaScriptChannelNames ((List <String >) params .get (JS_CHANNEL_NAMES_FIELD ));
110+ List <String > names = (List <String >) params .get (JS_CHANNEL_NAMES_FIELD );
111+ if (names != null ) registerJavaScriptChannelNames (names );
110112 }
111113
112- updateAutoMediaPlaybackPolicy ((Integer ) params .get ("autoMediaPlaybackPolicy" ));
114+ Integer autoMediaPlaybackPolicy = (Integer ) params .get ("autoMediaPlaybackPolicy" );
115+ if (autoMediaPlaybackPolicy != null ) updateAutoMediaPlaybackPolicy (autoMediaPlaybackPolicy );
113116 if (params .containsKey ("userAgent" )) {
114117 String userAgent = (String ) params .get ("userAgent" );
115118 updateUserAgent (userAgent );
@@ -316,7 +319,7 @@ private void getTitle(Result result) {
316319 }
317320
318321 private void scrollTo (MethodCall methodCall , Result result ) {
319- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
322+ Map <String , Object > request = methodCall .arguments () ;
320323 int x = (int ) request .get ("x" );
321324 int y = (int ) request .get ("y" );
322325
@@ -326,7 +329,7 @@ private void scrollTo(MethodCall methodCall, Result result) {
326329 }
327330
328331 private void scrollBy (MethodCall methodCall , Result result ) {
329- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
332+ Map <String , Object > request = methodCall .arguments () ;
330333 int x = (int ) request .get ("x" );
331334 int y = (int ) request .get ("y" );
332335
@@ -346,7 +349,8 @@ private void applySettings(Map<String, Object> settings) {
346349 for (String key : settings .keySet ()) {
347350 switch (key ) {
348351 case "jsMode" :
349- updateJsMode ((Integer ) settings .get (key ));
352+ Integer mode = (Integer ) settings .get (key );
353+ if (mode != null ) updateJsMode (mode );
350354 break ;
351355 case "hasNavigationDelegate" :
352356 final boolean hasNavigationDelegate = (boolean ) settings .get (key );
@@ -359,7 +363,9 @@ private void applySettings(Map<String, Object> settings) {
359363 case "debuggingEnabled" :
360364 final boolean debuggingEnabled = (boolean ) settings .get (key );
361365
362- webView .setWebContentsDebuggingEnabled (debuggingEnabled );
366+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
367+ webView .setWebContentsDebuggingEnabled (debuggingEnabled );
368+ }
363369 break ;
364370 case "gestureNavigationEnabled" :
365371 break ;
@@ -389,7 +395,9 @@ private void updateAutoMediaPlaybackPolicy(int mode) {
389395 // This is the index of the AutoMediaPlaybackPolicy enum, index 1 is always_allow, for all
390396 // other values we require a user gesture.
391397 boolean requireUserGesture = mode != 1 ;
392- webView .getSettings ().setMediaPlaybackRequiresUserGesture (requireUserGesture );
398+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN_MR1 ) {
399+ webView .getSettings ().setMediaPlaybackRequiresUserGesture (requireUserGesture );
400+ }
393401 }
394402
395403 private void registerJavaScriptChannelNames (List <String > channelNames ) {
0 commit comments