@@ -108,13 +108,16 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
108
108
methodChannel .setMethodCallHandler (this );
109
109
110
110
flutterWebViewClient = new FlutterWebViewClient (methodChannel );
111
- applySettings ((Map <String , Object >) params .get ("settings" ));
111
+ Map <String , Object > settings = (Map <String , Object >) params .get ("settings" );
112
+ if (settings != null ) applySettings (settings );
112
113
113
114
if (params .containsKey (JS_CHANNEL_NAMES_FIELD )) {
114
- registerJavaScriptChannelNames ((List <String >) params .get (JS_CHANNEL_NAMES_FIELD ));
115
+ List <String > names = (List <String >) params .get (JS_CHANNEL_NAMES_FIELD );
116
+ if (names != null ) registerJavaScriptChannelNames (names );
115
117
}
116
118
117
- updateAutoMediaPlaybackPolicy ((Integer ) params .get ("autoMediaPlaybackPolicy" ));
119
+ Integer autoMediaPlaybackPolicy = (Integer ) params .get ("autoMediaPlaybackPolicy" );
120
+ if (autoMediaPlaybackPolicy != null ) updateAutoMediaPlaybackPolicy (autoMediaPlaybackPolicy );
118
121
if (params .containsKey ("userAgent" )) {
119
122
String userAgent = (String ) params .get ("userAgent" );
120
123
updateUserAgent (userAgent );
@@ -321,7 +324,7 @@ private void getTitle(Result result) {
321
324
}
322
325
323
326
private void scrollTo (MethodCall methodCall , Result result ) {
324
- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
327
+ Map <String , Object > request = methodCall .arguments () ;
325
328
int x = (int ) request .get ("x" );
326
329
int y = (int ) request .get ("y" );
327
330
@@ -331,7 +334,7 @@ private void scrollTo(MethodCall methodCall, Result result) {
331
334
}
332
335
333
336
private void scrollBy (MethodCall methodCall , Result result ) {
334
- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
337
+ Map <String , Object > request = methodCall .arguments () ;
335
338
int x = (int ) request .get ("x" );
336
339
int y = (int ) request .get ("y" );
337
340
@@ -351,7 +354,8 @@ private void applySettings(Map<String, Object> settings) {
351
354
for (String key : settings .keySet ()) {
352
355
switch (key ) {
353
356
case "jsMode" :
354
- updateJsMode ((Integer ) settings .get (key ));
357
+ Integer mode = (Integer ) settings .get (key );
358
+ if (mode != null ) updateJsMode (mode );
355
359
break ;
356
360
case "hasNavigationDelegate" :
357
361
final boolean hasNavigationDelegate = (boolean ) settings .get (key );
@@ -364,7 +368,9 @@ private void applySettings(Map<String, Object> settings) {
364
368
case "debuggingEnabled" :
365
369
final boolean debuggingEnabled = (boolean ) settings .get (key );
366
370
367
- webView .setWebContentsDebuggingEnabled (debuggingEnabled );
371
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
372
+ webView .setWebContentsDebuggingEnabled (debuggingEnabled );
373
+ }
368
374
break ;
369
375
case "gestureNavigationEnabled" :
370
376
break ;
@@ -397,7 +403,9 @@ private void updateAutoMediaPlaybackPolicy(int mode) {
397
403
// This is the index of the AutoMediaPlaybackPolicy enum, index 1 is always_allow, for all
398
404
// other values we require a user gesture.
399
405
boolean requireUserGesture = mode != 1 ;
400
- webView .getSettings ().setMediaPlaybackRequiresUserGesture (requireUserGesture );
406
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN_MR1 ) {
407
+ webView .getSettings ().setMediaPlaybackRequiresUserGesture (requireUserGesture );
408
+ }
401
409
}
402
410
403
411
private void registerJavaScriptChannelNames (List <String > channelNames ) {
0 commit comments