3

I have recently make a food ordering website where people can login and start ordering once user login they can stay 30 days because we have save their cookie for 30 days.

and recently i have coverted that website to mobile app using android webview. but one once user login on our app and close app and if they re open again they have to again login. so, how i can prevent it and stay logged in user.

I want to even set cookie in android webview in which once user login they can stay 30 days without re login.

please spread your knowledge if you have knowledge about this.

Here is my mainactivity.java code where we should place your code.

package com.eatlaza;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {

    WebView webView;
    ProgressBar progressBarWeb;

    RelativeLayout relativeLayout;
    Button btnNoConnection;
//cookie allow


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

            webView = (WebView) findViewById(R.id.myWebView);
            progressBarWeb = (ProgressBar) findViewById(R.id.progressBar);
            btnNoConnection = (Button) findViewById(R.id.btnNoConnection);
            relativeLayout = (RelativeLayout) findViewById(R.id.relativelayoiut);

            //javascript enable
            webView.getSettings().setJavaScriptEnabled(true);
            checkInternetConnection();


            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });
            webView.setWebChromeClient(new WebChromeClient() {
                @Override
                public void onProgressChanged(WebView view, int newProgress) {
                    progressBarWeb.setVisibility(View.VISIBLE);
                    progressBarWeb.setProgress(newProgress);
                    if (newProgress == 100) {
                        progressBarWeb.setVisibility(View.GONE);
                    }


                    super.onProgressChanged(view, newProgress);
                }
            });
            //retry
            btnNoConnection.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    checkInternetConnection();
                }
            });
        }

        @Override
        public void onBackPressed () {
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                AlertDialog alertDialog = new AlertDialog.Builder(this)
//set message
                        .setMessage("Are You Sure You want to close it?")
//set positive button
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                //set what would happen when positive button is clicked
                                finish();
                            }
                        })
//set negative button
                        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                //set what should happen when negative button is clicked
                                // Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
                            }
                        })
                        .show();
                //super.onBackPressed();
            }
        }
        //class for check internet connection
        public void checkInternetConnection () {
            ConnectivityManager connectivityManager = (ConnectivityManager)
                    this.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            NetworkInfo mobileNetwork = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

            String webUrl = "https://eatlaza.com";
            if (wifi.isConnected()) {
                webView.loadUrl(webUrl);
                webView.setVisibility(View.VISIBLE);
                relativeLayout.setVisibility(View.GONE);
            } else if (mobileNetwork.isConnected()) {
                webView.loadUrl(webUrl);
                webView.setVisibility(View.VISIBLE);
                relativeLayout.setVisibility(View.GONE);
            } else {
                webView.setVisibility(View.GONE);
                relativeLayout.setVisibility(View.VISIBLE);
            }
        }
    }

please tell me how can we set cookie using android webview.

BM Yadav
  • 31
  • 2
  • Use the CookieManager to get the value of the login cookie. Store it to shared preferences. Then when you open the app, read in that shared preference and set the cookie. That way you will keep the cookie across sessions. – Gabe Sechan Jan 17 '23 at 17:28

0 Answers0