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 android.support.v4.app.RemoteInput.getDataResultsFromIntent() calling method android.net.Uri.parse()


    public static java.util.Map getDataResultsFromIntent(android.content.Intent p6, String p7)
    {
        if (android.os.Build$VERSION.SDK_INT < 26) {
            if (android.os.Build$VERSION.SDK_INT < 16) {
                android.util.Log.w("RemoteInput", "RemoteInput is only supported from API Level 16");
                return 0;
            } else {
                boolean v6_1 = android.support.v4.app.RemoteInput.getClipDataIntentFromIntent(p6);
                if (v6_1) {
                    int v0_2 = new java.util.HashMap();
                    java.util.Iterator v1_3 = v6_1.getExtras().keySet().iterator();
                    while (v1_3.hasNext()) {
                        android.net.Uri v3_2 = ((String) v1_3.next());
                        if (v3_2.startsWith("android.remoteinput.dataTypeResultsData")) {
                            String v4_4 = v3_2.substring("android.remoteinput.dataTypeResultsData".length());
                            if (!v4_4.isEmpty()) {
                                android.net.Uri v3_4 = v6_1.getBundleExtra(v3_2).getString(p7);
                                if ((v3_4 != null) && (!v3_4.isEmpty())) {
                                    v0_2.put(v4_4, android.net.Uri.parse(v3_4));
                                }
                            }
                        }
                    }
                    if (v0_2.isEmpty()) {
                        v0_2 = 0;
                    }
                    return v0_2;
                } else {
                    return 0;
                }
            }
        } else {
            return android.app.RemoteInput.getDataResultsFromIntent(p6, p7);
        }
    }

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


    public static android.net.Uri getReferrer(android.app.Activity p2)
    {
        if (android.os.Build$VERSION.SDK_INT < 22) {
            int v2_5 = p2.getIntent();
            String v0_4 = ((android.net.Uri) v2_5.getParcelableExtra("android.intent.extra.REFERRER"));
            if (v0_4 == null) {
                int v2_1 = v2_5.getStringExtra("android.intent.extra.REFERRER_NAME");
                if (v2_1 == 0) {
                    return 0;
                } else {
                    return android.net.Uri.parse(v2_1);
                }
            } else {
                return v0_4;
            }
        } else {
            return p2.getReferrer();
        }
    }

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


    private android.content.Intent createIntentFromSuggestion(android.database.Cursor p9, int p10, String p11)
    {
        try {
            android.support.v7.widget.SearchView v1_6 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p9, "suggest_intent_action");
        } catch (android.content.Intent v10_1) {
            try {
                String v9_1 = p9.getPosition();
            } catch (RuntimeException) {
                v9_1 = -1;
            }
            android.support.v7.widget.SearchView v1_9 = new StringBuilder();
            v1_9.append("Search suggestions cursor at row ");
            v1_9.append(v9_1);
            v1_9.append(" returned exception.");
            android.util.Log.w("SearchView", v1_9.toString(), v10_1);
            return 0;
        }
        if (v1_6 == null) {
            v1_6 = this.mSearchable.getSuggestIntentAction();
        }
        if (v1_6 == null) {
            v1_6 = "android.intent.action.SEARCH";
        }
        String v2_0 = v1_6;
        android.support.v7.widget.SearchView v1_2 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p9, "suggest_intent_data");
        if (v1_2 == null) {
            v1_2 = this.mSearchable.getSuggestIntentData();
        }
        if (v1_2 != null) {
            android.net.Uri v3_1 = android.support.v7.widget.SuggestionsAdapter.getColumnString(p9, "suggest_intent_data_id");
            if (v3_1 != null) {
                String v4_1 = new StringBuilder();
                v4_1.append(v1_2);
                v4_1.append("/");
                v4_1.append(android.net.Uri.encode(v3_1));
                v1_2 = v4_1.toString();
            }
        }
        android.net.Uri v3_2;
        if (v1_2 != null) {
            v3_2 = android.net.Uri.parse(v1_2);
        } else {
            v3_2 = 0;
        }
        return this.createIntent(v2_0, v3_2, android.support.v7.widget.SuggestionsAdapter.getColumnString(p9, "suggest_intent_extra_data"), android.support.v7.widget.SuggestionsAdapter.getColumnString(p9, "suggest_intent_query"), p10, p11);
    }

Method android.support.v4.graphics.drawable.IconCompat.loadDrawableInner() calling method android.net.Uri.parse()


    private android.graphics.drawable.Drawable loadDrawableInner(android.content.Context p7)
    {
        switch (this.mType) {
            case 1:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), ((android.graphics.Bitmap) this.mObj1));
            case 2:
                android.graphics.drawable.BitmapDrawable v0_14 = this.getResPackage();
                if (android.text.TextUtils.isEmpty(v0_14)) {
                    v0_14 = p7.getPackageName();
                }
                try {
                    return android.support.v4.content.res.ResourcesCompat.getDrawable(android.support.v4.graphics.drawable.IconCompat.getResources(p7, v0_14), this.mInt1, p7.getTheme());
                } catch (android.content.res.Resources v7_7) {
                    StringBuilder v4_7 = new Object[2];
                    v4_7[0] = Integer.valueOf(this.mInt1);
                    v4_7[1] = this.mObj1;
                    android.util.Log.e("IconCompat", String.format("Unable to load resource 0x%08x from pkg=%s", v4_7), v7_7);
                }
            case 3:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeByteArray(((byte[]) this.mObj1), this.mInt1, this.mInt2));
            case 4:
                android.graphics.Bitmap v1_9;
                android.graphics.drawable.BitmapDrawable v0_6 = android.net.Uri.parse(((String) this.mObj1));
                android.graphics.Bitmap v1_6 = v0_6.getScheme();
                if ((!"content".equals(v1_6)) && (!"file".equals(v1_6))) {
                    try {
                        v1_9 = new java.io.FileInputStream(new java.io.File(((String) this.mObj1)));
                    } catch (android.graphics.Bitmap v1_10) {
                        StringBuilder v4_3 = new StringBuilder();
                        v4_3.append("Unable to load image from path: ");
                        v4_3.append(v0_6);
                        android.util.Log.w("IconCompat", v4_3.toString(), v1_10);
                        v1_9 = 0;
                    }
                } else {
                    try {
                        v1_9 = p7.getContentResolver().openInputStream(v0_6);
                    } catch (android.graphics.Bitmap v1_12) {
                        StringBuilder v4_5 = new StringBuilder();
                        v4_5.append("Unable to load image from URI: ");
                        v4_5.append(v0_6);
                        android.util.Log.w("IconCompat", v4_5.toString(), v1_12);
                    }
                }
                if (v1_9 == null) {
                } else {
                    return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.graphics.BitmapFactory.decodeStream(v1_9));
                }
            case 5:
                return new android.graphics.drawable.BitmapDrawable(p7.getResources(), android.support.v4.graphics.drawable.IconCompat.createLegacyIconFromAdaptiveIcon(((android.graphics.Bitmap) this.mObj1), 0));
            default:
        }
        return 0;
    }

Method android.support.v4.graphics.drawable.IconCompat.getUri() calling method android.net.Uri.parse()


    public android.net.Uri getUri()
    {
        if ((this.mType != -1) || (android.os.Build$VERSION.SDK_INT < 23)) {
            return android.net.Uri.parse(((String) this.mObj1));
        } else {
            return android.support.v4.graphics.drawable.IconCompat.getUri(((android.graphics.drawable.Icon) this.mObj1));
        }
    }

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


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

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

Couldn't retrieve source code