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.