I creating a android application and i want to load data from my server but if i load the data i get a “TypeError: Failed to fetch”.
I have tried many ways. I also tried just to load google.com inside the webpage and it also doesn’t work.
All my files:
Main_actifity.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@+id/ContentFrame" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" />
MainActivity.java
package com.enervisie.enervisieinspect; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebViewClient; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.view.View; import android.webkit.SslErrorHandler; import android.net.http.SslError; import android.widget.FrameLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // Landscape View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); // WebView FrameLayout contentFrame = (FrameLayout) findViewById(R.id.ContentFrame); WebView mWebView = new WebView(this); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setAllowFileAccessFromFileURLs(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true); } mWebView.getSettings().setLoadWithOverviewMode(true); mWebView.getSettings().setBuiltInZoomControls(false); mWebView.getSettings().setDatabaseEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.getSettings().setAllowContentAccess(true); mWebView.getSettings().setSupportZoom(false); mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setInitialScale(0); mWebView.setWebViewClient(new WebViewClient() { public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { handler.proceed() ; } }); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return false; } }); mWebView.loadUrl("file:///android_asset/index.html"); contentFrame.removeAllViews(); contentFrame.addView(mWebView); } public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // Landscape handler.proceed(); // Ignore SSL certificate errors } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.EnervisieInspect" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
I was expecting to load data from my webserver and send data to my webserver.
Advertisement
Answer
You should add internet permission in Manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
and follow this instruction for Network Security Configuration