233

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. 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

565

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

Sign up to request clarification or add additional context in comments.

15 Comments

I also developed a Webview template and got same error. And, now it is solved. thanks
this is already there and it's still showing the same error!!!1
Not solve still showing error in android pie
it does not work with android:networkSecurityConfig set
@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
|
30

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 Comments

what about subdomains?
that solution is added to AdroidManifest.xml file

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.