Ad Code

Responsive Advertisement

Convert Wesite in App Android Studio , webview source code android studio free 2021



 How To Create Android App For Website Using WebView With Google AdMob:






With a steep increase of Mobile users, many of website owners are now creating an android app for their website. This helps in increasing their user database. In this tutorial, I will show you how to create a basic android app for your website using WebView in android. We will use New Android Studio to create this project. Make sure that your website is crafted for Responsive Web Design in order for this tutorial to work.

Create Android App for Website:


Requirements and Recommended Tutorials for this article:


To Create Android App, first you need to know following requirements:


How to implement a splash screen for your Android Project.


How to create android Project using Android Studio.


A Responsive Website.


A little bit of Java.



AndroidManifest


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

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

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

 

activity_splash.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#1E88E5"
    tools:context=".Splash">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/logo"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:src="@drawable/ball"
        app:civ_border_color="#fff"
        app:civ_border_width="8dp" />

    <TextView
        android:id="@+id/appname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/logo"
        android:layout_centerInParent="true"
        android:fontFamily="sans-serif-light"
        android:text="Developed By Anni Codez"
        android:textColor="#fff"
        android:textSize="25dp"
        android:textStyle="bold" />

</RelativeLayout>

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LiveMatch">


    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-7152143528716675/6995453880">
    </com.google.android.gms.ads.AdView>

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="60dp"
        android:background="@color/black">

    </WebView>

</RelativeLayout>

alert_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="20dp"
    android:layout_gravity="center"
    android:background="@drawable/bg_round">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:textAllCaps="false" />

    <TextView
        android:layout_width="174dp"
        android:layout_height="wrap_content"
        android:fontFamily="monospace"
        android:gravity="center_horizontal"
        android:layout_marginLeft="55dp"
        android:text="Ooops !"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

    <TextView
        android:layout_width="197dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="50dp"
        android:fontFamily="serif"
        android:gravity="center_horizontal"
        android:text="No internet Connection found. \n Check your connection"
        android:textAlignment="center"
        android:textAppearance="@style/TextAppearance.AppCompat.Small"
        android:textColor="@android:color/white" />

    <Button
        android:id="@+id/bt_try_again"
        android:layout_width="284dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:background="@android:drawable/bottom_bar"
        android:text="Try Again"
        android:textAllCaps="false"
        android:textColor="@android:color/white"
        android:textStyle="bold" />



</LinearLayout>

Splash.java


package com.anni.freeliveipl;

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

import androidx.appcompat.app.AppCompatActivity;

public class Splash extends AppCompatActivity {

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


        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);


        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {

                Intent i = new Intent(Splash.this, MainActivity.class);
                startActivity(i);

                finish();
            }
        }, 3000);
    }
}


WebViewActivity.java


package com.anni.webviewandroidapps;

import android.Manifest;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Browser;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;


import java.io.File;
import java.net.URL;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class WebViewActivity extends AppCompatActivity {


public ProgressBar progressBar;

WebView webView;
private String webUrl;


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

progressBar = (ProgressBar)findViewById(R.id.prg);


//Assign variable
webView = findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebChromeClient(new ChromeClient());




webView.loadUrl(webUrl);
webView.setWebViewClient(new WebViewClient(){

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
setTitle("Loading...");
}
@Override public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
setTitle(view.getTitle());
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});

//Initialize vebSetting
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
// webSettings.setAppCacheEnabled(true);
webView.setHorizontalScrollBarEnabled(false);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setDomStorageEnabled(true);
webSettings.setDisplayZoomControls(false);
webSettings.supportZoom();
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
// webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);



//Initialize ConnectivityManager
ConnectivityManager connectivityManager = (ConnectivityManager)
getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);


//Get active network info
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();


//Check Network Status
if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()){

//When Internet is InActive


//Initialize dialog
Dialog dialog = new Dialog(this);
//Set Connection view
dialog.setContentView(R.layout.alert_dialog);
//Set outside touch
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
//Set dialog width and height
dialog.getWindow().setLayout(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT);
//Set transparent Background
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
//Set animation
dialog.getWindow().getAttributes().windowAnimations =
android.R.style.Animation_Dialog;

//Initialize dialog variable
Button btTryAgain = dialog.findViewById(R.id.bt_try_again);
//Perform onclick listener
btTryAgain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Call recreate method
recreate();
}










});


//Show dialog
dialog.show();
}else {
//When internet is active

//Load url in webview
webView.loadUrl("https://sites.google.com/site/cprliveipl/pdf");

}







//External storage permission for saving file

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED){

Log.d("permission","permission denied to WRITE_EXTERNAL_STORAGE - requesting it");
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions,1);
}


}

//handle downloading

webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimeType);
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie",cookies);
request.addRequestHeader("User-Agent",userAgent);
request.setDescription("Downloading file....");
request.setTitle(URLUtil.guessFileName(url,contentDisposition,mimeType));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,URLUtil.guessFileName(url, contentDisposition, mimeType));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(),"Downloading File",Toast.LENGTH_SHORT).show();


}
});



}

@Override
public void onBackPressed() {
if (webView.canGoBack()){
webView.goBack();
}
else
super.onBackPressed();
}



private class ChromeClient extends WebChromeClient {
private View mCustomView;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
protected FrameLayout mFullscreenContainer;
private int mOriginalOrientation;
private int mOriginalSystemUiVisibility;

ChromeClient() {}

public Bitmap getDefaultVideoPoster()
{
if (mCustomView == null) {
return null;
}
return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
}
public void onHideCustomView()
{
((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
this.mCustomView = null;
getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
setRequestedOrientation(this.mOriginalOrientation);
this.mCustomViewCallback.onCustomViewHidden();
this.mCustomViewCallback = null;
}

public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
{
if (this.mCustomView != null)
{
onHideCustomView();
return;
}
this.mCustomView = paramView;
this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
this.mOriginalOrientation = getRequestedOrientation();
this.mCustomViewCallback = paramCustomViewCallback;
((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
getWindow().getDecorView().setSystemUiVisibility(3846 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
}
}
Reactions

Post a Comment

0 Comments