@@ -103,13 +103,16 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
103
103
methodChannel .setMethodCallHandler (this );
104
104
105
105
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 );
107
108
108
109
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 );
110
112
}
111
113
112
- updateAutoMediaPlaybackPolicy ((Integer ) params .get ("autoMediaPlaybackPolicy" ));
114
+ Integer autoMediaPlaybackPolicy = (Integer ) params .get ("autoMediaPlaybackPolicy" );
115
+ if (autoMediaPlaybackPolicy != null ) updateAutoMediaPlaybackPolicy (autoMediaPlaybackPolicy );
113
116
if (params .containsKey ("userAgent" )) {
114
117
String userAgent = (String ) params .get ("userAgent" );
115
118
updateUserAgent (userAgent );
@@ -316,7 +319,7 @@ private void getTitle(Result result) {
316
319
}
317
320
318
321
private void scrollTo (MethodCall methodCall , Result result ) {
319
- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
322
+ Map <String , Object > request = methodCall .arguments () ;
320
323
int x = (int ) request .get ("x" );
321
324
int y = (int ) request .get ("y" );
322
325
@@ -326,7 +329,7 @@ private void scrollTo(MethodCall methodCall, Result result) {
326
329
}
327
330
328
331
private void scrollBy (MethodCall methodCall , Result result ) {
329
- Map <String , Object > request = ( Map < String , Object >) methodCall .arguments ;
332
+ Map <String , Object > request = methodCall .arguments () ;
330
333
int x = (int ) request .get ("x" );
331
334
int y = (int ) request .get ("y" );
332
335
@@ -346,7 +349,8 @@ private void applySettings(Map<String, Object> settings) {
346
349
for (String key : settings .keySet ()) {
347
350
switch (key ) {
348
351
case "jsMode" :
349
- updateJsMode ((Integer ) settings .get (key ));
352
+ Integer mode = (Integer ) settings .get (key );
353
+ if (mode != null ) updateJsMode (mode );
350
354
break ;
351
355
case "hasNavigationDelegate" :
352
356
final boolean hasNavigationDelegate = (boolean ) settings .get (key );
@@ -359,7 +363,9 @@ private void applySettings(Map<String, Object> settings) {
359
363
case "debuggingEnabled" :
360
364
final boolean debuggingEnabled = (boolean ) settings .get (key );
361
365
362
- webView .setWebContentsDebuggingEnabled (debuggingEnabled );
366
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
367
+ webView .setWebContentsDebuggingEnabled (debuggingEnabled );
368
+ }
363
369
break ;
364
370
case "gestureNavigationEnabled" :
365
371
break ;
@@ -389,7 +395,9 @@ private void updateAutoMediaPlaybackPolicy(int mode) {
389
395
// This is the index of the AutoMediaPlaybackPolicy enum, index 1 is always_allow, for all
390
396
// other values we require a user gesture.
391
397
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
+ }
393
401
}
394
402
395
403
private void registerJavaScriptChannelNames (List <String > channelNames ) {
0 commit comments