Page blanche entre Splash screen et affichage webview

Résolu
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
bonjour
je le dit et je le répète , je suis pas doué en java , mais j essai toujours de développer mon code webview, cette fois le probleme c'est que quand je lance mon appli il y'a un vide en blanc entre le splash screen et l affichage du contenu. je vous pris de m aider.


mon code :

MainActivity.java
package com.akssa.groupe;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {
    WebView webView;

    RelativeLayout relativeLayout;
    Button btnNoInternetConnection;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webView);
        // loadUrl


        webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.startsWith("tel:")) {
                    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                    startActivity(intent);
                    return true;
                }
                return false;
            }
        });





        btnNoInternetConnection = (Button) findViewById(R.id.btnNoConnection);
        relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);

        checkConnection();


        WebSettings webSettings = webView.getSettings();

        webSettings.setJavaScriptEnabled(true);
        //
        webSettings.setDomStorageEnabled(true);
        //
        webSettings.setUseWideViewPort(true);

        webSettings.setAllowContentAccess(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAppCacheEnabled(true);



        btnNoInternetConnection.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                checkConnection();

            }
        });

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()){
        webView.goBack();
        return true;
        }
        return super.onKeyDown(keyCode, event);
    }


    public void checkConnection(){


        ConnectivityManager connectivityManager = (ConnectivityManager)
                this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        NetworkInfo mobileNetwork = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);


        if (wifi.isConnected()){
            webView.loadUrl("https://www.groupe-alakssa.ma/");
            webView.setVisibility(View.VISIBLE);
            relativeLayout.setVisibility(View.GONE);



        }
        else if (mobileNetwork.isConnected()){
            webView.loadUrl("https://www.groupe-alakssa.ma/");
            webView.setVisibility(View.VISIBLE);
            relativeLayout.setVisibility(View.GONE);

        }
        else {


            webView.setVisibility(View.GONE);
            relativeLayout.setVisibility(View.VISIBLE);



        }



    }
}


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.akssa.groupe">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.akssa.groupe.SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.akssa.groupe.MainActivity">

        </activity>
    </application>

</manifest>
A voir également:

5 réponses

BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
re,

Sûrement le temps que la page se charge.
Généralement, on affiche un loader lors du chargement et on le cache lorsque la page est chargée.
Un peu comme cela :


progressBar.setVisibility(View.VISIBLE);

webView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            startActivity(intent);
            return true;
        }
        return false;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
    }
});
0
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
je place le loader sur le splashScreen ?? tu peux m aider la ??
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Bah non, sur l'écran de la webview, le temps que la page se charge
0
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
voila le code SplashScreen.java
package com.akssa.groupe;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashScreen extends AppCompatActivity {

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

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashScreen.this,MainActivity.class));
finish();
}
},2000);
}
}
0
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
ça veux dire que en peux pas remplacerle progressBar par le splashscreen , le temp ou le webview ce charge .
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Non. Tu comprends bien que Splashscreen et Main sont 2 Activity différentes. Il ne peut y avoir qu'une seule d'active à un instant T
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ilyass2020 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
ok Merci beaucoup BunoCS :)
0