222

I'm starting to work on an app on Android, so I don't have much. All I have is just a WebView so far. I created the project in Android Studio, and my project got set as an Android InstantApp. I'm not sure why/how, but my guess is that I overlooked an option for it when creating the project.

I was getting an error from the WebView saying net::ERR_CLEARTEXT_NOT_PERMITTED. When I googled the error, I saw that when an app is an InstantApp, WebViews can only load sites that are HTTPS, and cannot load an HTTP site.

The purpose of this app is to be an extremely simple Flash player for only one site. This is to have better performance running a game that requires Flash. This game is at darkorbit.com, which is HTTPS.

MainActivity.java:

package com.tylerr147.darkorbit;

import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView wv = findViewById(R.id.webView1);
        wv.loadUrl("https://darkorbit.com/");
        wv.setWebViewClient(new CustomWebViewClient());
        WebSettings webSettings = wv.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setPluginState(WebSettings.PluginState.ON);

    }
}

and CustomWebViewClient.java

package com.tylerr147.darkorbit;

import android.webkit.WebView;
import android.webkit.WebViewClient;

public class CustomWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

My question: How can I disable my app as an InstantApp, or how can I get this WebView to display the site?

I feel like it's important I mention a few other details too: In the app, where it is showing the WebView, it also says "The webpage at http://darkorbit.com/" could not be loaded because: net::ERR_CLEARTEXT_NOT_PERMITTED

Notice that is says "... site at http://darkorbit.com/ ...", and not "... site at https://darkorbit.com/ ..." even though the string for the URL is hardcoded, and says "https://darkorbit.com/". Also, I am testing the app on an emulator set up as a Google Pixel 2 running Android 9.

Any help would be appreciated. Thank you.

3
  • removing android:networkSecurityConfig="@xml/network_security_config" this worked for me.
    – Rajendra
    Commented Aug 8, 2019 at 11:06
  • even i removed android:networkSecurityConfig="@xml/network_security_config" and added android:usesCleartextTraffic="true" then its worked for me Commented Mar 31, 2020 at 7:48
  • for me the solution simply was to reinstall & rebuild my capacitor app (ionic cap sync). Something went wrong during this process Commented Dec 21, 2023 at 8:29

2 Answers 2

544

Solution:

Add the below line in your application tag:

android:usesCleartextTraffic="true"

As shown below:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>

UPDATE: If you have network security config such as: android:networkSecurityConfig="@xml/network_security_config"

No Need to set clear text traffic to true as shown above, instead use the below code:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        ....
        ....
    </domain-config>

    <base-config cleartextTrafficPermitted="false"/>
</network-security-config>  

Set the cleartextTrafficPermitted to true

15
  • 2
    I also developed a Webview template and got same error. And, now it is solved. thanks Commented Feb 17, 2019 at 8:50
  • 16
    this is already there and it's still showing the same error!!!1 Commented Mar 14, 2019 at 7:31
  • 7
    Not solve still showing error in android pie Commented Jun 7, 2019 at 6:43
  • 9
    it does not work with android:networkSecurityConfig set Commented Jul 15, 2019 at 8:31
  • 4
    @Miguel check if you have a networkSecurityConfig in your AndroidManifest.xml under <application ...>. If you do, you may either try removing it (if not needed), or change it to allow your domain. This answer may help you too: stackoverflow.com/a/50834600/7850685
    – Luzian
    Commented Aug 21, 2019 at 18:53
29

When you call "https://darkorbit.com/" your server figures that it's missing "www" so it redirects the call to "http://www.darkorbit.com/" and then to "https://www.darkorbit.com/", your WebView call is blocked at the first redirection as it's a "http" call. You can call "https://www.darkorbit.com/" instead and it will solve the issue.

2
  • 1
    what about subdomains? Commented Sep 8, 2020 at 19:32
  • that solution is added to AdroidManifest.xml file Commented Apr 14, 2022 at 9:04

Not the answer you're looking for? Browse other questions tagged or ask your own question.