Info Call to dangerous WebView settings API

Description

List of all WebView methods used in the application.

Recommendation

If your application accesses sensitive data with a WebView, you may want to use the clearCache() method to delete any files stored locally.

Any URI received via an intent from outside a trust-boundary should be validated before rendering it with WebView

Technical details

Method com.google.appinventor.components.runtime.WebViewer.<init>() calling method android.webkit.WebSettings.setJavaScriptEnabled()


    public WebViewer(com.google.appinventor.components.runtime.ComponentContainer p6)
    {
        super(p6);
        super.followLinks = 1;
        super.prompt = 1;
        super.ignoreSslErrors = 0;
        super.havePermission = 0;
        super.webview = new android.webkit.WebView(p6.$context());
        super.resetWebViewClient();
        super.webview.getSettings().setJavaScriptEnabled(1);
        super.webview.setFocusable(1);
        super.wvInterface = new com.google.appinventor.components.runtime.WebViewer$WebViewInterface(super, super.webview.getContext());
        super.webview.addJavascriptInterface(super.wvInterface, "AppInventor");
        super.webview.getSettings().setBuiltInZoomControls(1);
        if (com.google.appinventor.components.runtime.util.SdkLevel.getLevel() >= 5) {
            com.google.appinventor.components.runtime.util.EclairUtil.setupWebViewGeoLoc(super, super.webview, p6.$context());
        }
        p6.$add(super);
        super.webview.setOnTouchListener(new com.google.appinventor.components.runtime.WebViewer$1(super));
        super.HomeUrl("");
        super.Width(-2);
        super.Height(-2);
        return;
    }

Method com.google.appinventor.components.runtime.WebViewActivity.onCreate() calling method android.webkit.WebSettings.setJavaScriptEnabled()


    public void onCreate(android.os.Bundle p9)
    {
        super.onCreate(p9);
        android.webkit.WebView v4_1 = new android.webkit.WebView(this);
        v4_1.getSettings().setJavaScriptEnabled(1);
        v4_1.setWebViewClient(new com.google.appinventor.components.runtime.WebViewActivity$1(this));
        this.setContentView(v4_1);
        android.content.Intent v3 = this.getIntent();
        if ((v3 != null) && (v3.getData() != null)) {
            android.net.Uri v2 = v3.getData();
            android.util.Log.i("WebView", new StringBuilder().append("Got intent with URI: ").append(v2).append(", scheme=").append(v2.getScheme()).append(", host=").append(v2.getHost()).toString());
            v4_1.loadUrl(v2.toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.SplashActivity.onCreate() calling method android.webkit.WebSettings.setJavaScriptEnabled()


    public void onCreate(android.os.Bundle p7)
    {
        super.onCreate(p7);
        com.google.appinventor.components.runtime.SplashActivity$JavaInterface v0_1 = new com.google.appinventor.components.runtime.SplashActivity$JavaInterface(this, this);
        this.handler = new android.os.Handler();
        this.webview = new android.webkit.WebView(this);
        android.webkit.WebSettings v2 = this.webview.getSettings();
        v2.setJavaScriptEnabled(1);
        v2.setDatabaseEnabled(1);
        v2.setDomStorageEnabled(1);
        v2.setDatabasePath(this.getApplicationContext().getDir("database", 0).getPath());
        this.webview.setWebChromeClient(new com.google.appinventor.components.runtime.SplashActivity$1(this));
        this.setContentView(this.webview);
        this.webview.addJavascriptInterface(v0_1, "Android");
        this.webview.loadUrl("file:///android_asset/splash.html");
        return;
    }

Method com.google.appinventor.components.runtime.ContactPicker.ViewContact() calling method android.net.Uri.parse()


    public void ViewContact(String p4)
    {
        if (this.contactUri != null) {
            android.content.Intent v0_1 = new android.content.Intent("android.intent.action.VIEW", android.net.Uri.parse(p4));
            if (v0_1.resolveActivity(this.activityContext.getPackageManager()) != null) {
                this.activityContext.startActivity(v0_1);
            }
        }
        return;
    }

Method android.support.v7.widget.SuggestionsAdapter.getDrawableFromResourceValue() calling method android.net.Uri.parse()


    private android.graphics.drawable.Drawable getDrawableFromResourceValue(String p10)
    {
        if ((p10 != null) && ((!p10.isEmpty()) && (!"0".equals(p10)))) {
            try {
                int v3 = Integer.parseInt(p10);
                String v1 = new StringBuilder().append("android.resource://").append(this.mProviderContext.getPackageName()).append("/").append(v3).toString();
                android.graphics.drawable.Drawable v0 = this.checkIconCache(v1);
            } catch (android.content.res.Resources$NotFoundException v2) {
                android.util.Log.w("SuggestionsAdapter", new StringBuilder().append("Icon resource not found: ").append(p10).toString());
                v0 = 0;
            } catch (android.content.res.Resources$NotFoundException v2) {
                v0 = this.checkIconCache(p10);
                if (v0 == null) {
                    v0 = this.getDrawable(android.net.Uri.parse(p10));
                    this.storeInIconCache(p10, v0);
                }
            }
            if (v0 == null) {
                v0 = android.support.v4.content.ContextCompat.getDrawable(this.mProviderContext, v3);
                this.storeInIconCache(v1, v0);
            }
        } else {
            v0 = 0;
        }
        return v0;
    }

Method android.support.v4.widget.SimpleCursorAdapter.setViewImage() calling method android.net.Uri.parse()


    public void setViewImage(android.widget.ImageView p3, String p4)
    {
        try {
            p3.setImageResource(Integer.parseInt(p4));
        } catch (NumberFormatException v0) {
            p3.setImageURI(android.net.Uri.parse(p4));
        }
        return;
    }

Method com.google.appinventor.components.runtime.Texting.SendMessage() calling method android.net.Uri.parse()


    public void SendMessage()
    {
        String v1 = this.message;
        android.content.Intent v0_1 = new android.content.Intent("android.intent.action.SENDTO", android.net.Uri.parse(new StringBuilder().append("smsto:").append(this.phoneNumber).toString()));
        v0_1.putExtra("sms_body", v1);
        if (v0_1.resolveActivity(this.form.getPackageManager()) != null) {
            this.form.registerForActivityResult(this, 1413830740);
            this.form.startActivityForResult(v0_1, 1413830740);
        }
        return;
    }

Method com.google.appinventor.components.runtime.Sharing.ShareFileWithMessage() calling method android.net.Uri.parse()


    public void ShareFileWithMessage(String p14, String p15)
    {
        String v4 = this.form.$context().getPackageName();
        if (!p14.startsWith("file://")) {
            p14 = new StringBuilder().append("file://").append(p14).toString();
        }
        java.io.File v2_1 = new java.io.File(android.net.Uri.parse(p14).getPath());
        if (!v2_1.isFile()) {
            String v0 = "ShareFile";
            if (p15.equals("")) {
                v0 = "ShareFileWithMessage";
            }
            com.google.appinventor.components.runtime.Form v9_10 = this.form;
            Object[] v11_0 = new Object[1];
            v11_0[0] = p14;
            v9_10.dispatchErrorOccurredEvent(this, v0, 2001, v11_0);
        } else {
            String v7 = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(p14.substring((p14.lastIndexOf(".") + 1)).toLowerCase());
            android.net.Uri v6 = android.support.v4.content.FileProvider.getUriForFile(this.form.$context(), new StringBuilder().append(v4).append(".provider").toString(), v2_1);
            android.content.Intent v5_1 = new android.content.Intent("android.intent.action.SEND");
            v5_1.putExtra("android.intent.extra.STREAM", v6);
            v5_1.setFlags(1);
            v5_1.setType(v7);
            if (p15.length() > 0) {
                v5_1.putExtra("android.intent.extra.TEXT", p15);
            }
            this.form.startActivity(v5_1);
        }
        return;
    }

Method com.google.appinventor.components.runtime.PhoneStatus.installURL() calling method android.net.Uri.parse()


    public void installURL(String p5)
    {
        this.form.startActivity(new android.content.Intent("android.intent.action.VIEW").setData(android.net.Uri.parse(p5)));
        return;
    }

Method com.google.appinventor.components.runtime.ActivityStarter.buildActivityIntent() calling method android.net.Uri.parse()


    private android.content.Intent buildActivityIntent()
    {
        android.net.Uri v7;
        if (this.dataUri.length() == 0) {
            v7 = 0;
        } else {
            v7 = android.net.Uri.parse(this.dataUri);
        }
        int v4_0 = new android.content.Intent(this.action);
        if ((v7 != null) && (this.dataUri.toLowerCase().startsWith("file://"))) {
            android.util.Log.d("ActivityStarter", "Using file://");
            java.io.File v3_1 = new java.io.File(v7.getPath());
            if (v3_1.isFile()) {
                android.util.Log.d("ActivityStarter", "It\'s a file");
                v7 = android.support.v4.content.FileProvider.getUriForFile(this.form.$context(), new StringBuilder().append(this.form.$context().getPackageName()).append(".provider").toString(), v3_1);
                v4_0 = new android.content.Intent(this.action);
                v4_0.setFlags(1);
                android.util.Log.d("ActivityStarter", "added permissions");
            }
        }
        if (!android.text.TextUtils.isEmpty(this.Action())) {
            if (this.dataType.length() == 0) {
                v4_0.setData(v7);
            } else {
                if (v7 == null) {
                    v4_0.setType(this.dataType);
                } else {
                    v4_0.setDataAndType(v7, this.dataType);
                }
            }
            if ((this.activityPackage.length() == 0) && (this.activityClass.length() == 0)) {
                if (this.Action().equals("android.intent.action.MAIN")) {
                    v4_0 = 0;
                    return v4_0;
                }
            } else {
                v4_0.setComponent(new android.content.ComponentName(this.activityPackage, this.activityClass));
            }
            if ((this.extraKey.length() != 0) && (this.extraValue.length() != 0)) {
                android.util.Log.i("ActivityStarter", new StringBuilder().append("Adding extra, key = ").append(this.extraKey).append(" value = ").append(this.extraValue).toString());
                v4_0.putExtra(this.extraKey, this.extraValue);
            }
            String v10_8 = this.extras.toArray();
            String v11_4 = v10_8.length;
            int v9_6 = 0;
            while (v9_6 < v11_4) {
                com.google.appinventor.components.runtime.util.YailList v0_1 = ((com.google.appinventor.components.runtime.util.YailList) v10_8[v9_6]);
                String v5 = v0_1.getString(0);
                String v8 = v0_1.getString(1);
                if ((v5.length() != 0) && (v8.length() != 0)) {
                    android.util.Log.i("ActivityStarter", new StringBuilder().append("Adding extra (pairs), key = ").append(v5).append(" value = ").append(v8).toString());
                    v4_0.putExtra(v5, v8);
                }
                v9_6++;
            }
        } else {
            v4_0 = 0;
        }
        return v4_0;
    }

Method org.acra.sender.HttpPostSender.<init>() calling method android.net.Uri.parse()


    public HttpPostSender(String p2, java.util.Map p3)
    {
        this.mFormUri = android.net.Uri.parse(p2);
        this.mMapping = p3;
        return;
    }

Method org.acra.sender.GoogleFormSender.send() calling method android.net.Uri.parse()


    public void send(org.acra.collector.CrashReportData p10)
    {
        android.net.Uri v2;
        if (this.mFormUri != null) {
            v2 = this.mFormUri;
        } else {
            org.acra.sender.ReportSenderException v5_15 = org.acra.ACRA.getConfig().googleFormUrlFormat();
            String v6_10 = new Object[1];
            v6_10[0] = org.acra.ACRA.getConfig().formKey();
            v2 = android.net.Uri.parse(String.format(v5_15, v6_10));
        }
        java.util.Map v1 = this.remap(p10);
        v1.put("pageNumber", "0");
        v1.put("backupCache", "");
        v1.put("submit", "Envoyer");
        try {
            java.net.URL v3_1 = new java.net.URL(v2.toString());
            android.util.Log.d(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Sending report ").append(((String) p10.get(org.acra.ReportField.REPORT_ID))).toString());
            android.util.Log.d(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Connect to ").append(v3_1).toString());
            org.acra.util.HttpRequest v4_1 = new org.acra.util.HttpRequest();
            v4_1.setConnectionTimeOut(org.acra.ACRA.getConfig().connectionTimeout());
            v4_1.setSocketTimeOut(org.acra.ACRA.getConfig().socketTimeout());
            v4_1.setMaxNrRetries(org.acra.ACRA.getConfig().maxNumberOfRequestRetries());
            v4_1.sendPost(v3_1, v1);
            return;
        } catch (java.io.IOException v0) {
            throw new org.acra.sender.ReportSenderException("Error while sending report to Google Form.", v0);
        }
    }

Method org.acra.sender.GoogleFormSender.<init>() calling method android.net.Uri.parse()


    public GoogleFormSender(String p4)
    {
        android.net.Uri v0_3 = org.acra.ACRA.getConfig().googleFormUrlFormat();
        Object[] v1_1 = new Object[1];
        v1_1[0] = p4;
        this.mFormUri = android.net.Uri.parse(String.format(v0_3, v1_1));
        return;
    }

Method android.support.v7.widget.SearchView.createIntentFromSuggestion() calling method android.net.Uri.parse()


    private android.content.Intent createIntentFromSuggestion(android.database.Cursor p13, int p14, String p15)
    {
        try {
            String v1 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p13, "suggest_intent_action");
        } catch (RuntimeException v8) {
            try {
                int v11 = p13.getPosition();
            } catch (RuntimeException v9) {
                v11 = -1;
            }
            android.util.Log.w("SearchView", new StringBuilder().append("Search suggestions cursor at row ").append(v11).append(" returned exception.").toString(), v8);
            android.content.Intent v0_12 = 0;
            return v0_12;
        }
        if (v1 == null) {
            v1 = this.mSearchable.getSuggestIntentAction();
        }
        if (v1 == null) {
            v1 = "android.intent.action.SEARCH";
        }
        String v7 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p13, "suggest_intent_data");
        if (v7 == null) {
            v7 = this.mSearchable.getSuggestIntentData();
        }
        if (v7 != null) {
            String v10 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p13, "suggest_intent_data_id");
            if (v10 != null) {
                v7 = new StringBuilder().append(v7).append("/").append(android.net.Uri.encode(v10)).toString();
            }
        }
        android.net.Uri v2;
        if (v7 != null) {
            v2 = android.net.Uri.parse(v7);
        } else {
            v2 = 0;
        }
        v0_12 = this.createIntent(v1, v2, android.support.v7.widget.SuggestionsAdapter.getColumnString(p13, "suggest_intent_extra_data"), android.support.v7.widget.SuggestionsAdapter.getColumnString(p13, "suggest_intent_query"), p14, p15);
        return v0_12;
    }

Method android.support.v4.app.ActivityCompat.getReferrer() calling method android.net.Uri.parse()


    public static android.net.Uri getReferrer(android.app.Activity p5)
    {
        int v1_0;
        if (android.os.Build$VERSION.SDK_INT < 22) {
            android.content.Intent v0 = p5.getIntent();
            v1_0 = ((android.net.Uri) v0.getParcelableExtra("android.intent.extra.REFERRER"));
            if (v1_0 == 0) {
                String v2 = v0.getStringExtra("android.intent.extra.REFERRER_NAME");
                if (v2 == null) {
                    v1_0 = 0;
                } else {
                    v1_0 = android.net.Uri.parse(v2);
                }
            }
        } else {
            v1_0 = p5.getReferrer();
        }
        return v1_0;
    }

Method com.google.appinventor.components.runtime.util.PhoneCallUtil.makePhoneCall() calling method android.net.Uri.parse()


    public static void makePhoneCall(android.content.Context p4, String p5)
    {
        if ((p5 != null) && (p5.length() > 0)) {
            p4.startActivity(new android.content.Intent("android.intent.action.CALL", android.net.Uri.parse(new StringBuilder().append("tel:").append(p5).toString())));
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.MediaUtil.openMedia() calling method android.net.Uri.parse()


    private static java.io.InputStream openMedia(com.google.appinventor.components.runtime.Form p4, String p5, com.google.appinventor.components.runtime.util.MediaUtil$MediaSource p6)
    {
        java.io.InputStream v0_0;
        switch (com.google.appinventor.components.runtime.util.MediaUtil$3.$SwitchMap$com$google$appinventor$components$runtime$util$MediaUtil$MediaSource[p6.ordinal()]) {
            case 1:
                v0_0 = com.google.appinventor.components.runtime.util.MediaUtil.getAssetsIgnoreCaseInputStream(p4, p5);
                break;
            case 2:
                p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                v0_0 = new java.io.FileInputStream(com.google.appinventor.components.runtime.util.MediaUtil.replAssetPath(p5));
                break;
            case 3:
                p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                v0_0 = new java.io.FileInputStream(p5);
                break;
            case 4:
                if (!com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p5)) {
                    v0_0 = new java.net.URL(p5).openStream();
                } else {
                    p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                }
            case 6:
                v0_0 = p4.getContentResolver().openInputStream(android.net.Uri.parse(p5));
                break;
            case 7:
                if (com.google.appinventor.components.runtime.util.SdkLevel.getLevel() < 12) {
                    v0_0 = android.provider.Contacts$People.openContactPhotoInputStream(p4.getContentResolver(), android.net.Uri.parse(p5));
                } else {
                    v0_0 = com.google.appinventor.components.runtime.util.HoneycombMR1Util.openContactPhotoInputStreamHelper(p4.getContentResolver(), android.net.Uri.parse(p5));
                }
                if (v0_0 != null) {
                } else {
                    throw new java.io.IOException(new StringBuilder().append("Unable to open contact photo ").append(p5).append(".").toString());
                }
                break;
            default:
                throw new java.io.IOException(new StringBuilder().append("Unable to open media ").append(p5).append(".").toString());
        }
        return v0_0;
    }

Method com.google.appinventor.components.runtime.util.MediaUtil.loadVideoView() calling method android.net.Uri.parse()


    public static void loadVideoView(android.widget.VideoView p5, com.google.appinventor.components.runtime.Form p6, String p7)
    {
        com.google.appinventor.components.runtime.util.MediaUtil$MediaSource v0 = com.google.appinventor.components.runtime.util.MediaUtil.determineMediaSource(p6, p7);
        switch (com.google.appinventor.components.runtime.util.MediaUtil$3.$SwitchMap$com$google$appinventor$components$runtime$util$MediaUtil$MediaSource[v0.ordinal()]) {
            case 1:
            case 5:
                p5.setVideoPath(com.google.appinventor.components.runtime.util.MediaUtil.cacheMediaTempFile(p6, p7, v0).getAbsolutePath());
                break;
            case 2:
                p6.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                p5.setVideoPath(com.google.appinventor.components.runtime.util.MediaUtil.replAssetPath(p7));
                break;
            case 3:
                p6.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                p5.setVideoPath(p7);
                break;
            case 4:
                if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p7)) {
                    p6.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                }
                p5.setVideoPath(com.google.appinventor.components.runtime.util.MediaUtil.fileUrlToFilePath(p7));
                break;
            case 6:
                p5.setVideoURI(android.net.Uri.parse(p7));
                break;
            case 7:
                throw new java.io.IOException(new StringBuilder().append("Unable to load video for contact ").append(p7).append(".").toString());
                break;
            default:
                throw new java.io.IOException(new StringBuilder().append("Unable to load video ").append(p7).append(".").toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.MediaUtil.loadMediaPlayer() calling method android.net.Uri.parse()


    public static void loadMediaPlayer(android.media.MediaPlayer p10, com.google.appinventor.components.runtime.Form p11, String p12)
    {
        switch (com.google.appinventor.components.runtime.util.MediaUtil$3.$SwitchMap$com$google$appinventor$components$runtime$util$MediaUtil$MediaSource[com.google.appinventor.components.runtime.util.MediaUtil.determineMediaSource(p11, p12).ordinal()]) {
            case 1:
                android.content.res.AssetFileDescriptor v6 = com.google.appinventor.components.runtime.util.MediaUtil.getAssetsIgnoreCaseAfd(p11, p12);
                try {
                    p10.setDataSource(v6.getFileDescriptor(), v6.getStartOffset(), v6.getLength());
                    v6.close();
                } catch (Throwable v0_11) {
                    v6.close();
                    throw v0_11;
                }
                break;
            case 2:
                p11.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                p10.setDataSource(com.google.appinventor.components.runtime.util.MediaUtil.replAssetPath(p12));
                break;
            case 3:
                p11.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                p10.setDataSource(p12);
                break;
            case 4:
                if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p12)) {
                    p11.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                }
                p10.setDataSource(com.google.appinventor.components.runtime.util.MediaUtil.fileUrlToFilePath(p12));
                break;
            case 5:
                p10.setDataSource(p12);
                break;
            case 6:
                p10.setDataSource(p11, android.net.Uri.parse(p12));
                break;
            case 7:
                throw new java.io.IOException(new StringBuilder().append("Unable to load audio or video for contact ").append(p12).append(".").toString());
                break;
            default:
                throw new java.io.IOException(new StringBuilder().append("Unable to load audio or video ").append(p12).append(".").toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.WebViewActivity$1.shouldOverrideUrlLoading() calling method android.net.Uri.parse()


    public boolean shouldOverrideUrlLoading(android.webkit.WebView p7, String p8)
    {
        android.util.Log.i("WebView", new StringBuilder().append("Handling url ").append(p8).toString());
        android.net.Uri v2 = android.net.Uri.parse(p8);
        if (!v2.getScheme().equals("appinventor")) {
            p7.loadUrl(p8);
        } else {
            android.content.Intent v0_1 = new android.content.Intent();
            v0_1.setData(v2);
            this.this$0.setResult(-1, v0_1);
            this.this$0.finish();
        }
        return 1;
    }

Method com.google.appinventor.components.runtime.Twitter$1.run() calling method android.net.Uri.parse()


    public void run()
    {
        if (!com.google.appinventor.components.runtime.Twitter.access$000(this.this$0, this.val$myConsumerKey, this.val$myConsumerSecret)) {
            try {
                com.google.appinventor.components.runtime.Twitter.access$200(this.this$0).setOAuthConsumer(this.val$myConsumerKey, this.val$myConsumerSecret);
                twitter4j.auth.RequestToken v4 = com.google.appinventor.components.runtime.Twitter.access$200(this.this$0).getOAuthRequestToken("appinventor://twitter");
                String v0 = v4.getAuthorizationURL();
                com.google.appinventor.components.runtime.Twitter.access$302(this.this$0, v4);
                android.content.Intent v1_1 = new android.content.Intent("android.intent.action.MAIN", android.net.Uri.parse(v0));
                v1_1.setClassName(com.google.appinventor.components.runtime.Twitter.access$400(this.this$0).$context(), com.google.appinventor.components.runtime.Twitter.access$500());
                com.google.appinventor.components.runtime.Twitter.access$400(this.this$0).$context().startActivityForResult(v1_1, com.google.appinventor.components.runtime.Twitter.access$600(this.this$0));
            } catch (twitter4j.TwitterException v2) {
                android.util.Log.i("Twitter", new StringBuilder().append("Got exception: ").append(v2.getMessage()).toString());
                v2.printStackTrace();
                android.os.Handler v5_18 = this.this$0.form;
                com.google.appinventor.components.runtime.Twitter$1$2 v6_14 = this.this$0;
                Object[] v9_1 = new Object[1];
                v9_1[0] = v2.getMessage();
                v5_18.dispatchErrorOccurredEvent(v6_14, "Authorize", 303, v9_1);
                this.this$0.DeAuthorize();
            } catch (IllegalStateException v3) {
                android.util.Log.e("Twitter", "OAuthConsumer was already set: launch IsAuthorized()");
                com.google.appinventor.components.runtime.Twitter.access$100(this.this$0).post(new com.google.appinventor.components.runtime.Twitter$1$2(this));
            }
        } else {
            com.google.appinventor.components.runtime.Twitter.access$100(this.this$0).post(new com.google.appinventor.components.runtime.Twitter$1$1(this));
        }
        return;
    }

Method android.support.v4.media.MediaMetadataCompat.getDescription() calling method android.net.Uri.parse()


    public android.support.v4.media.MediaDescriptionCompat getDescription()
    {
        android.support.v4.media.MediaDescriptionCompat v19_17;
        if (this.mDescription == null) {
            String v12 = this.getString("android.media.metadata.MEDIA_ID");
            android.support.v4.media.MediaDescriptionCompat v0_4 = new CharSequence[3];
            CharSequence[] v16 = v0_4;
            CharSequence v8 = 0;
            android.net.Uri v9 = 0;
            CharSequence v6 = this.getText("android.media.metadata.DISPLAY_TITLE");
            if (android.text.TextUtils.isEmpty(v6)) {
                int v17 = 0;
                int v10 = 0;
                while ((v17 < v16.length) && (v10 < android.support.v4.media.MediaMetadataCompat.PREFERRED_DESCRIPTION_ORDER.length)) {
                    int v11 = (v10 + 1);
                    String v15_0 = this.getText(android.support.v4.media.MediaMetadataCompat.PREFERRED_DESCRIPTION_ORDER[v10]);
                    if (!android.text.TextUtils.isEmpty(v15_0)) {
                        int v18 = (v17 + 1);
                        v16[v17] = v15_0;
                        v17 = v18;
                    }
                    v10 = v11;
                }
            } else {
                v16[0] = v6;
                v16[1] = this.getText("android.media.metadata.DISPLAY_SUBTITLE");
                v16[2] = this.getText("android.media.metadata.DISPLAY_DESCRIPTION");
            }
            int v7_0 = 0;
            while (v7_0 < android.support.v4.media.MediaMetadataCompat.PREFERRED_BITMAP_ORDER.length) {
                String v15_1 = this.getBitmap(android.support.v4.media.MediaMetadataCompat.PREFERRED_BITMAP_ORDER[v7_0]);
                if (v15_1 == null) {
                    v7_0++;
                } else {
                    v8 = v15_1;
                    break;
                }
            }
            int v7_1 = 0;
            while (v7_1 < android.support.v4.media.MediaMetadataCompat.PREFERRED_URI_ORDER.length) {
                String v15_2 = this.getString(android.support.v4.media.MediaMetadataCompat.PREFERRED_URI_ORDER[v7_1]);
                if (android.text.TextUtils.isEmpty(v15_2)) {
                    v7_1++;
                } else {
                    v9 = android.net.Uri.parse(v15_2);
                    break;
                }
            }
            android.net.Uri v13 = 0;
            String v14 = this.getString("android.media.metadata.MEDIA_URI");
            if (!android.text.TextUtils.isEmpty(v14)) {
                v13 = android.net.Uri.parse(v14);
            }
            android.support.v4.media.MediaDescriptionCompat$Builder v4_1 = new android.support.v4.media.MediaDescriptionCompat$Builder();
            v4_1.setMediaId(v12);
            v4_1.setTitle(v16[0]);
            v4_1.setSubtitle(v16[1]);
            v4_1.setDescription(v16[2]);
            v4_1.setIconBitmap(v8);
            v4_1.setIconUri(v9);
            v4_1.setMediaUri(v13);
            android.os.Bundle v5_1 = new android.os.Bundle();
            if (this.mBundle.containsKey("android.media.metadata.BT_FOLDER_TYPE")) {
                v5_1.putLong("android.media.extra.BT_FOLDER_TYPE", this.getLong("android.media.metadata.BT_FOLDER_TYPE"));
            }
            if (this.mBundle.containsKey("android.media.metadata.DOWNLOAD_STATUS")) {
                v5_1.putLong("android.media.extra.DOWNLOAD_STATUS", this.getLong("android.media.metadata.DOWNLOAD_STATUS"));
            }
            if (!v5_1.isEmpty()) {
                v4_1.setExtras(v5_1);
            }
            this.mDescription = v4_1.build();
            v19_17 = this.mDescription;
        } else {
            v19_17 = this.mDescription;
        }
        return v19_17;
    }

Method android.support.v4.app.RemoteInputCompatJellybean.getDataResultsFromIntent() calling method android.net.Uri.parse()


    static java.util.Map getDataResultsFromIntent(android.content.Intent p10, String p11)
    {
        int v7 = 0;
        android.content.Intent v1 = android.support.v4.app.RemoteInputCompatJellybean.getClipDataIntentFromIntent(p10);
        if (v1 != null) {
            int v5_0 = new java.util.HashMap();
            boolean v8_0 = v1.getExtras().keySet().iterator();
            while (v8_0.hasNext()) {
                String v3_1 = ((String) v8_0.next());
                if (v3_1.startsWith("android.remoteinput.dataTypeResultsData")) {
                    String v4 = v3_1.substring("android.remoteinput.dataTypeResultsData".length());
                    if ((v4 != null) && (!v4.isEmpty())) {
                        String v6 = v1.getBundleExtra(v3_1).getString(p11);
                        if ((v6 != null) && (!v6.isEmpty())) {
                            v5_0.put(v4, android.net.Uri.parse(v6));
                        }
                    }
                }
            }
            if (v5_0.isEmpty()) {
                v5_0 = 0;
            }
            v7 = v5_0;
        }
        return v7;
    }

Method android.support.v4.app.RemoteInputCompatApi20.getDataResultsFromIntent() calling method android.net.Uri.parse()


    static java.util.Map getDataResultsFromIntent(android.content.Intent p10, String p11)
    {
        int v7 = 0;
        android.content.Intent v1 = android.support.v4.app.RemoteInputCompatApi20.getClipDataIntentFromIntent(p10);
        if (v1 != null) {
            int v5_0 = new java.util.HashMap();
            boolean v8_0 = v1.getExtras().keySet().iterator();
            while (v8_0.hasNext()) {
                String v3_1 = ((String) v8_0.next());
                if (v3_1.startsWith("android.remoteinput.dataTypeResultsData")) {
                    String v4 = v3_1.substring("android.remoteinput.dataTypeResultsData".length());
                    if ((v4 != null) && (!v4.isEmpty())) {
                        String v6 = v1.getBundleExtra(v3_1).getString(p11);
                        if ((v6 != null) && (!v6.isEmpty())) {
                            v5_0.put(v4, android.net.Uri.parse(v6));
                        }
                    }
                }
            }
            if (v5_0.isEmpty()) {
                v5_0 = 0;
            }
            v7 = v5_0;
        }
        return v7;
    }

Method com.google.appinventor.components.runtime.MediaStore.PostMedia() calling method org.apache.http.client.HttpClient.execute()


    public void PostMedia(String p17)
    {
        com.google.appinventor.components.runtime.MediaStore$1 v7_1 = new com.google.appinventor.components.runtime.MediaStore$1(this);
        try {
            String v8;
            org.apache.http.impl.client.DefaultHttpClient v1_1 = new org.apache.http.impl.client.DefaultHttpClient();
            org.apache.http.entity.mime.MultipartEntityBuilder v4 = org.apache.http.entity.mime.MultipartEntityBuilder.create();
            v4.setMode(org.apache.http.entity.mime.HttpMultipartMode.BROWSER_COMPATIBLE);
        } catch (Exception v2) {
            v2.printStackTrace();
            v7_1.onFailure(v2.getMessage());
            return;
        }
        if (!p17.split("/")[0].equals("file:")) {
            v8 = p17;
        } else {
            v8 = new java.io.File(new java.net.URL(p17).toURI()).getAbsolutePath();
        }
        v4.addPart("file", new org.apache.http.entity.mime.content.FileBody(new java.io.File(v8)));
        org.apache.http.HttpEntity v3 = v4.build();
        org.apache.http.client.methods.HttpPost v10_1 = new org.apache.http.client.methods.HttpPost(this.getUploadUrl());
        v10_1.setEntity(v3);
        v7_1.onSuccess(org.apache.http.util.EntityUtils.toString(v1_1.execute(v10_1).getEntity()));
        return;
    }

Method com.google.appinventor.components.runtime.FusiontablesControl.doPostRequest() calling method org.apache.http.client.HttpClient.execute()


    private String doPostRequest(String p14, String p15)
    {
        String v4 = p14.trim().substring("create table".length());
        android.util.Log.i("FUSION", new StringBuilder().append("Http Post content = ").append(v4).toString());
        org.apache.http.client.methods.HttpPost v7_1 = new org.apache.http.client.methods.HttpPost(new StringBuilder().append("https://www.googleapis.com/fusiontables/v2/tables?key=").append(this.ApiKey()).toString());
        try {
            org.apache.http.entity.StringEntity v3_1 = new org.apache.http.entity.StringEntity(v4);
            v3_1.setContentType("application/json");
            v7_1.addHeader("Authorization", new StringBuilder().append("Bearer ").append(p15).toString());
            v7_1.setEntity(v3_1);
            try {
                org.apache.http.HttpResponse v8 = new org.apache.http.impl.client.DefaultHttpClient().execute(v7_1);
                int v9 = v8.getStatusLine().getStatusCode();
            } catch (org.json.JSONException v1_4) {
                v1_4.printStackTrace();
                String v10_14 = new StringBuilder().append("Error: ").append(v1_4.getMessage()).toString();
                return v10_14;
            } catch (org.json.JSONException v1_3) {
                v1_3.printStackTrace();
                v10_14 = new StringBuilder().append("Error: ").append(v1_3.getMessage()).toString();
                return v10_14;
            }
            if ((v8 == null) || (v9 != 200)) {
                android.util.Log.i("FUSION", new StringBuilder().append("Error: ").append(v8.getStatusLine().toString()).toString());
                this.queryResultStr = v8.getStatusLine().toString();
            } else {
                try {
                    String v6 = com.google.appinventor.components.runtime.FusiontablesControl.httpApacheResponseToString(v8);
                    org.json.JSONObject v5_1 = new org.json.JSONObject(v6);
                } catch (org.json.JSONException v1_1) {
                    v1_1.printStackTrace();
                    v10_14 = new StringBuilder().append("Error: ").append(v1_1.getMessage()).toString();
                    return v10_14;
                } catch (org.json.JSONException v1_0) {
                    v1_0.printStackTrace();
                    v10_14 = new StringBuilder().append("Error: ").append(v1_0.getMessage()).toString();
                    return v10_14;
                }
                if (!v5_1.has("tableId")) {
                    this.queryResultStr = v6;
                } else {
                    this.queryResultStr = new StringBuilder().append("tableId,").append(v5_1.get("tableId")).toString();
                }
                android.util.Log.i("FUSION", new StringBuilder().append("Response code = ").append(v8.getStatusLine()).toString());
                android.util.Log.i("FUSION", new StringBuilder().append("Query = ").append(p14).append("\nResultStr = ").append(this.queryResultStr).toString());
            }
            v10_14 = this.queryResultStr;
            return v10_14;
        } catch (org.json.JSONException v1_2) {
            v1_2.printStackTrace();
            v10_14 = new StringBuilder().append("Error: ").append(v1_2.getMessage()).toString();
            return v10_14;
        }
    }

Method com.google.appinventor.components.runtime.util.ClientLoginHelper.execute() calling method org.apache.http.client.HttpClient.execute()


    public org.apache.http.HttpResponse execute(org.apache.http.client.methods.HttpUriRequest p5)
    {
        this.initialize();
        com.google.appinventor.components.runtime.util.ClientLoginHelper.addGoogleAuthHeader(p5, this.authToken);
        org.apache.http.HttpResponse v0 = this.client.execute(p5);
        if (v0.getStatusLine().getStatusCode() == 401) {
            android.util.Log.i("ClientLoginHelper", new StringBuilder().append("Invalid token: ").append(this.authToken).toString());
            this.accountManager.invalidateAuthToken("com.google", this.authToken);
            this.authToken = this.getAuthToken();
            com.google.appinventor.components.runtime.util.ClientLoginHelper.removeGoogleAuthHeaders(p5);
            com.google.appinventor.components.runtime.util.ClientLoginHelper.addGoogleAuthHeader(p5, this.authToken);
            android.util.Log.i("ClientLoginHelper", new StringBuilder().append("new token: ").append(this.authToken).toString());
            v0 = this.client.execute(p5);
        }
        return v0;
    }

Method org.acra.util.HttpRequest.sendPost() calling method org.apache.http.client.HttpClient.execute()


    public void sendPost(java.net.URL p11, java.util.Map p12)
    {
        org.apache.http.client.HttpClient v0 = this.getHttpClient();
        org.apache.http.client.methods.HttpPost v1 = this.getHttpPost(p11, p12);
        org.acra.ACRA.log.d(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Sending request to ").append(p11).toString());
        java.util.Iterator v2 = p12.keySet().iterator();
        while (v2.hasNext()) {
            v2.next();
        }
        org.apache.http.HttpResponse v3 = v0.execute(v1, new org.apache.http.protocol.BasicHttpContext());
        if (v3 != null) {
            if (v3.getStatusLine() != null) {
                String v4 = Integer.toString(v3.getStatusLine().getStatusCode());
                if ((v4.startsWith("4")) || (v4.startsWith("5"))) {
                    throw new java.io.IOException(new StringBuilder().append("Host returned error code ").append(v4).toString());
                }
            }
            org.apache.http.util.EntityUtils.toString(v3.getEntity());
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.WebServiceUtil.postCommand() calling method org.apache.http.client.HttpClient.execute()


    public void postCommand(String p8, String p9, java.util.List p10, com.google.appinventor.components.runtime.util.AsyncCallbackPair p11)
    {
        android.util.Log.d("WebServiceUtil", new StringBuilder().append("Posting ").append(p9).append(" to ").append(p8).append(" with arguments ").append(p10).toString());
        if ((p8 == null) || (p8.equals(""))) {
            p11.onFailure("No service url to post command to.");
        }
        org.apache.http.client.methods.HttpPost v1_1 = new org.apache.http.client.methods.HttpPost(new StringBuilder().append(p8).append("/").append(p9).toString());
        if (p10 == null) {
            p10 = new java.util.ArrayList();
        }
        try {
            org.apache.http.impl.client.BasicResponseHandler v3_1 = new org.apache.http.impl.client.BasicResponseHandler();
            v1_1.setEntity(new org.apache.http.client.entity.UrlEncodedFormEntity(p10, "UTF-8"));
            v1_1.setHeader("Accept", "application/json");
            p11.onSuccess(((String) com.google.appinventor.components.runtime.util.WebServiceUtil.httpClient.execute(v1_1, v3_1)));
        } catch (java.io.IOException v0_2) {
            android.util.Log.w("WebServiceUtil", v0_2);
            p11.onFailure("Failed to encode params for web service call.");
        } catch (java.io.IOException v0_1) {
            android.util.Log.w("WebServiceUtil", v0_1);
            p11.onFailure("Communication with the web service encountered a protocol exception.");
        } catch (java.io.IOException v0_0) {
            android.util.Log.w("WebServiceUtil", v0_0);
            p11.onFailure("Communication with the web service timed out.");
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.WebRTCNativeMgr.sendRendezvous() calling method org.apache.http.client.HttpClient.execute()


    private void sendRendezvous(org.json.JSONObject p7)
    {
        try {
            p7.put("first", this.first);
            p7.put("webrtc", 1);
            p7.put("key", new StringBuilder().append(this.rCode).append("-r").toString());
        } catch (java.io.IOException v1_1) {
            android.util.Log.e("AppInvWebRTC", "Exception in sendRendezvous", v1_1);
            return;
        }
        if (this.first) {
            this.first = 0;
            p7.put("apiversion", com.google.appinventor.components.runtime.util.SdkLevel.getLevel());
        }
        org.apache.http.impl.client.DefaultHttpClient v0_1 = new org.apache.http.impl.client.DefaultHttpClient();
        org.apache.http.client.methods.HttpPost v2_1 = new org.apache.http.client.methods.HttpPost(new StringBuilder().append("http://").append(this.rendezvousServer).append("/rendezvous2/").toString());
        try {
            android.util.Log.d("AppInvWebRTC", new StringBuilder().append("About to send = ").append(p7.toString()).toString());
            v2_1.setEntity(new org.apache.http.entity.StringEntity(p7.toString()));
            v0_1.execute(v2_1);
        } catch (java.io.IOException v1_0) {
            android.util.Log.d("AppInvWebRTC", new StringBuilder().append("sendRedezvous IOException = ").append(v1_0.toString()).toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.WebRTCNativeMgr$4.run() calling method org.apache.http.client.HttpClient.execute()


    public void run()
    {
        try {
            org.apache.http.HttpResponse v16 = new org.apache.http.impl.client.DefaultHttpClient().execute(new org.apache.http.client.methods.HttpGet(new StringBuilder().append("http://").append(com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$800(this.this$0)).append("/rendezvous2/").append(com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$900(this.this$0)).append("-s").toString()));
            StringBuilder v17_1 = new StringBuilder();
            java.io.BufferedReader v14_1 = new java.io.BufferedReader(new java.io.InputStreamReader(v16.getEntity().getContent()));
        } catch (Exception v6_2) {
            android.util.Log.e("AppInvWebRTC", new StringBuilder().append("Caught IOException: ").append(v6_2.toString()).toString(), v6_2);
            if (!com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$300(this.this$0)) {
                return;
            } else {
                String v23_49 = this.this$0.timer;
                String v24_53 = new com.google.appinventor.components.runtime.util.WebRTCNativeMgr$4$1;
                v24_53(this);
                v23_49.schedule(v24_53, 1000);
                return;
            }
        } catch (Exception v6_1) {
            android.util.Log.e("AppInvWebRTC", new StringBuilder().append("Caught JSONException: ").append(v6_1.toString()).toString(), v6_1);
        } catch (Exception v6_0) {
            android.util.Log.e("AppInvWebRTC", new StringBuilder().append("Caught Exception: ").append(v6_0.toString()).toString(), v6_0);
        }
        while(true) {
            String v11 = v14_1.readLine();
            if (v11 == null) {
                break;
            }
            v17_1.append(v11);
        }
        if (com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$300(this.this$0)) {
            android.util.Log.d("AppInvWebRTC", new StringBuilder().append("response = ").append(v17_1.toString()).toString());
            org.json.JSONArray v10_1 = new org.json.JSONArray(v17_1.toString());
            android.util.Log.d("AppInvWebRTC", new StringBuilder().append("jsonArray.length() = ").append(v10_1.length()).toString());
            int v8 = 0;
            while (v8 < v10_1.length()) {
                android.util.Log.d("AppInvWebRTC", new StringBuilder().append("i = ").append(v8).toString());
                android.util.Log.d("AppInvWebRTC", new StringBuilder().append("element = ").append(v10_1.optString(v8)).toString());
                org.json.JSONObject v7_1 = ((org.json.JSONObject) v10_1.get(v8));
                if (com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$1000(this.this$0)) {
                    if (v7_1.has("nonce")) {
                        String v12 = v7_1.optString("nonce");
                        if (!v7_1.isNull("candidate")) {
                            org.json.JSONObject v4_1 = ((org.json.JSONObject) v7_1.get("candidate"));
                            String v21 = v4_1.optString("candidate");
                            String v20 = v4_1.optString("sdpMid");
                            int v19 = v4_1.optInt("sdpMLineIndex");
                            android.util.Log.d("AppInvWebRTC", new StringBuilder().append("candidate = ").append(v21).toString());
                            if (!com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$400(this.this$0).contains(v12)) {
                                com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$400(this.this$0).add(v12);
                                android.util.Log.d("AppInvWebRTC", "new nonce, about to add candidate!");
                                com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$000(this.this$0).addIceCandidate(new org.webrtc.IceCandidate(v20, v19, v21));
                                android.util.Log.d("AppInvWebRTC", "addIceCandidate returned");
                            }
                        } else {
                            android.util.Log.d("AppInvWebRTC", "Received a null candidate, skipping...");
                            v8++;
                        }
                    }
                } else {
                    if (v7_1.has("offer")) {
                        org.json.JSONObject v13_1 = ((org.json.JSONObject) v7_1.get("offer"));
                        String v18 = v13_1.optString("sdp");
                        String v22 = v13_1.optString("type");
                        android.util.Log.d("AppInvWebRTC", new StringBuilder().append("sdb = ").append(v18).toString());
                        android.util.Log.d("AppInvWebRTC", new StringBuilder().append("type = ").append(v22).toString());
                        com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$1002(this.this$0, 1);
                        android.util.Log.d("AppInvWebRTC", "About to set remote offer");
                        String v23_36 = com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$000(this.this$0);
                        String v24_34 = this.this$0.sdpObserver;
                        String v25_5 = new org.webrtc.SessionDescription;
                        v25_5(org.webrtc.SessionDescription$Type.OFFER, v18);
                        v23_36.setRemoteDescription(v24_34, v25_5);
                        com.google.appinventor.components.runtime.util.WebRTCNativeMgr.access$000(this.this$0).createAnswer(this.this$0.sdpObserver, new org.webrtc.MediaConstraints());
                        android.util.Log.d("AppInvWebRTC", "createAnswer returned");
                        v8 = -1;
                    } else {
                        v8++;
                    }
                }
                v8++;
            }
            android.util.Log.d("AppInvWebRTC", "exited loop");
        } else {
            android.util.Log.d("AppInvWebRTC", "keepPolling is false, we\'re done!");
            return;
        }
    }

Method com.google.appinventor.components.runtime.WebViewer.resetWebViewClient() calling method android.webkit.WebView.setWebViewClient()


    private void resetWebViewClient()
    {
        if (com.google.appinventor.components.runtime.util.SdkLevel.getLevel() < 8) {
            this.webview.setWebViewClient(new com.google.appinventor.components.runtime.WebViewer$WebViewerClient(this, 0));
        } else {
            this.webview.setWebViewClient(com.google.appinventor.components.runtime.util.FroyoUtil.getWebViewClient(this.ignoreSslErrors, this.followLinks, this.container.$form(), this));
        }
        return;
    }

Method com.google.appinventor.components.runtime.WebViewActivity.onCreate() calling method android.webkit.WebView.setWebViewClient()


    public void onCreate(android.os.Bundle p9)
    {
        super.onCreate(p9);
        android.webkit.WebView v4_1 = new android.webkit.WebView(this);
        v4_1.getSettings().setJavaScriptEnabled(1);
        v4_1.setWebViewClient(new com.google.appinventor.components.runtime.WebViewActivity$1(this));
        this.setContentView(v4_1);
        android.content.Intent v3 = this.getIntent();
        if ((v3 != null) && (v3.getData() != null)) {
            android.net.Uri v2 = v3.getData();
            android.util.Log.i("WebView", new StringBuilder().append("Got intent with URI: ").append(v2).append(", scheme=").append(v2.getScheme()).append(", host=").append(v2.getHost()).toString());
            v4_1.loadUrl(v2.toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.WebViewer.<init>() calling method android.webkit.WebView.addJavascriptInterface()


    public WebViewer(com.google.appinventor.components.runtime.ComponentContainer p6)
    {
        super(p6);
        super.followLinks = 1;
        super.prompt = 1;
        super.ignoreSslErrors = 0;
        super.havePermission = 0;
        super.webview = new android.webkit.WebView(p6.$context());
        super.resetWebViewClient();
        super.webview.getSettings().setJavaScriptEnabled(1);
        super.webview.setFocusable(1);
        super.wvInterface = new com.google.appinventor.components.runtime.WebViewer$WebViewInterface(super, super.webview.getContext());
        super.webview.addJavascriptInterface(super.wvInterface, "AppInventor");
        super.webview.getSettings().setBuiltInZoomControls(1);
        if (com.google.appinventor.components.runtime.util.SdkLevel.getLevel() >= 5) {
            com.google.appinventor.components.runtime.util.EclairUtil.setupWebViewGeoLoc(super, super.webview, p6.$context());
        }
        p6.$add(super);
        super.webview.setOnTouchListener(new com.google.appinventor.components.runtime.WebViewer$1(super));
        super.HomeUrl("");
        super.Width(-2);
        super.Height(-2);
        return;
    }

Method com.google.appinventor.components.runtime.SplashActivity.onCreate() calling method android.webkit.WebView.addJavascriptInterface()


    public void onCreate(android.os.Bundle p7)
    {
        super.onCreate(p7);
        com.google.appinventor.components.runtime.SplashActivity$JavaInterface v0_1 = new com.google.appinventor.components.runtime.SplashActivity$JavaInterface(this, this);
        this.handler = new android.os.Handler();
        this.webview = new android.webkit.WebView(this);
        android.webkit.WebSettings v2 = this.webview.getSettings();
        v2.setJavaScriptEnabled(1);
        v2.setDatabaseEnabled(1);
        v2.setDomStorageEnabled(1);
        v2.setDatabasePath(this.getApplicationContext().getDir("database", 0).getPath());
        this.webview.setWebChromeClient(new com.google.appinventor.components.runtime.SplashActivity$1(this));
        this.setContentView(this.webview);
        this.webview.addJavascriptInterface(v0_1, "Android");
        this.webview.loadUrl("file:///android_asset/splash.html");
        return;
    }

Method com.google.appinventor.components.runtime.WebViewer.loadUrl() calling method android.webkit.WebView.loadUrl()


    private void loadUrl(String p4, String p5)
    {
        if ((this.havePermission) || (!com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p5))) {
            this.webview.loadUrl(p5);
        } else {
            this.container.$form().askPermission("android.permission.READ_EXTERNAL_STORAGE", new com.google.appinventor.components.runtime.WebViewer$2(this, p5, p4));
        }
        return;
    }

Method com.google.appinventor.components.runtime.WebViewActivity.onCreate() calling method android.webkit.WebView.loadUrl()


    public void onCreate(android.os.Bundle p9)
    {
        super.onCreate(p9);
        android.webkit.WebView v4_1 = new android.webkit.WebView(this);
        v4_1.getSettings().setJavaScriptEnabled(1);
        v4_1.setWebViewClient(new com.google.appinventor.components.runtime.WebViewActivity$1(this));
        this.setContentView(v4_1);
        android.content.Intent v3 = this.getIntent();
        if ((v3 != null) && (v3.getData() != null)) {
            android.net.Uri v2 = v3.getData();
            android.util.Log.i("WebView", new StringBuilder().append("Got intent with URI: ").append(v2).append(", scheme=").append(v2.getScheme()).append(", host=").append(v2.getHost()).toString());
            v4_1.loadUrl(v2.toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.SplashActivity.onRequestPermissionsResult() calling method android.webkit.WebView.loadUrl()


    public void onRequestPermissionsResult(int p8, String[] p9, int[] p10)
    {
        int v2 = 0;
        while (v2 < p9.length) {
            int v1 = 0;
            if (p10[v2] == 0) {
                v1 = 1;
            }
            this.webview.loadUrl(new StringBuilder().append("javascript:permresult(\'").append(p9[v2]).append("\',").append(v1).append(")").toString());
            v2++;
        }
        return;
    }

Method com.google.appinventor.components.runtime.SplashActivity.onCreate() calling method android.webkit.WebView.loadUrl()


    public void onCreate(android.os.Bundle p7)
    {
        super.onCreate(p7);
        com.google.appinventor.components.runtime.SplashActivity$JavaInterface v0_1 = new com.google.appinventor.components.runtime.SplashActivity$JavaInterface(this, this);
        this.handler = new android.os.Handler();
        this.webview = new android.webkit.WebView(this);
        android.webkit.WebSettings v2 = this.webview.getSettings();
        v2.setJavaScriptEnabled(1);
        v2.setDatabaseEnabled(1);
        v2.setDomStorageEnabled(1);
        v2.setDatabasePath(this.getApplicationContext().getDir("database", 0).getPath());
        this.webview.setWebChromeClient(new com.google.appinventor.components.runtime.SplashActivity$1(this));
        this.setContentView(this.webview);
        this.webview.addJavascriptInterface(v0_1, "Android");
        this.webview.loadUrl("file:///android_asset/splash.html");
        return;
    }

Method com.google.appinventor.components.runtime.WebViewer$2.HandlePermissionResponse() calling method android.webkit.WebView.loadUrl()


    public void HandlePermissionResponse(String p5, boolean p6)
    {
        if (!p6) {
            this.this$0.container.$form().dispatchPermissionDeniedEvent(this.this$0, this.val$caller, "android.permission.READ_EXTERNAL_STORAGE");
        } else {
            com.google.appinventor.components.runtime.WebViewer.access$202(this.this$0, 1);
            com.google.appinventor.components.runtime.WebViewer.access$300(this.this$0).loadUrl(this.val$url);
        }
        return;
    }

Method com.google.appinventor.components.runtime.WebViewActivity$1.shouldOverrideUrlLoading() calling method android.webkit.WebView.loadUrl()


    public boolean shouldOverrideUrlLoading(android.webkit.WebView p7, String p8)
    {
        android.util.Log.i("WebView", new StringBuilder().append("Handling url ").append(p8).toString());
        android.net.Uri v2 = android.net.Uri.parse(p8);
        if (!v2.getScheme().equals("appinventor")) {
            p7.loadUrl(p8);
        } else {
            android.content.Intent v0_1 = new android.content.Intent();
            v0_1.setData(v2);
            this.this$0.setResult(-1, v0_1);
            this.this$0.finish();
        }
        return 1;
    }