Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में WebView को कैश से कैसे लोड करें?

एंड्रॉइड WebView को कैश से लोड करना (ऑफलाइन सपोर्ट)

यह उदाहरण दर्शाता है कि setCacheMode() का उपयोग करके WebView को कैश से कैसे लोड करें - ऑफलाइन काम करने के लिए।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

चरण 3: MainActivity.java

package com.example.myapplication;

import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("लोड हो रहा है...");
        progressDialog.setCancelable(false);

        WebView webView = findViewById(R.id.web_view);
        webView.requestFocus();
        webView.getSettings().setLightTouchEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setGeolocationEnabled(true);
        
        // कैश मोड सेट करें
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        
        // कैश साइज सेट करें (वैकल्पिक)
        webView.getSettings().setAppCacheMaxSize(10 * 1024 * 1024); // 10MB
        webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
        webView.getSettings().setAppCacheEnabled(true);
        
        webView.loadUrl("https://mylocation.org/");

        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                if (progress < 100) {
                    progressDialog.show();
                }
                if (progress == 100) {
                    progressDialog.dismiss();
                }
            }
        });
    }
}

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

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

    <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=".MainActivity">
            <intent-filter>
                
                
            </intent-filter>
        </activity>
    </application>
</manifest>

कैश मोड विकल्प

मोडव्यवहार
LOAD_DEFAULTकैश उपयोग करें, एक्सपायर्ड तो नेटवर्क से (डिफॉल्ट)
LOAD_CACHE_ELSE_NETWORKकैश से लोड करें, न होने पर नेटवर्क से
LOAD_CACHE_ONLYकेवल कैश से लोड करें, न होने पर एरर
LOAD_NO_CACHEकैश उपयोग न करें, हमेशा नेटवर्क से

नेटवर्क स्थिति के अनुसार डायनामिक मोड

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();

WebSettings settings = webView.getSettings();
if (isConnected) {
    settings.setCacheMode(WebSettings.LOAD_DEFAULT); // ऑनलाइन: नेटवर्क प्राथमिकता
} else {
    settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // ऑफलाइन: कैश उपयोग करें
}

कैश क्लियर करना

// ऐप कैश क्लियर करें
webView.clearCache(true);

// सभी WebView कैश क्लियर करें (एप्लिकेशन लेवल)
WebViewDatabase.getInstance(this).clearHttpAuthUsernamePassword();
WebViewDatabase.getInstance(this).clearFormData();
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");

ऐप चलाएं

पहली बार ऑनलाइन चलाएं (कैश बनेगा), फिर ऑफलाइन चलाएं - कैश से पेज लोड होगा।

एंड्रॉइड में WebView को कैश से कैसे लोड करें?

  1. Android में एसेट्स फोल्डर से फाइलें WebView में कैसे लोड करें? Android में एसेट्स फोल्डर से फाइलें WebView में कैसे लोड करें?

    Android ऐप के एसेट्स फोल्डर में रखी HTML फ़ाइल को WebView में लोड करने का सरल तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट में WebView res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=https://schemas.and

  1. एंड्रॉइड से मैलवेयर कैसे हटाएं? एंड्रॉइड से मैलवेयर कैसे हटाएं?

    परिचय स्मार्टफोन में बैंकिंग ऐप्स, व्यक्तिगत डेटा, स्थान इतिहास आदि संवेदनशील जानकारी होती है। एंड्रॉइड डिवाइस भी कंप्यूटर की तरह मैलवेयर (वायरस, ट्रोजन, स्पायवेयर, एडवेयर, रैंसमवेयर) से संक्रमित हो सकते हैं। मैलवेयर कैसे प्रवेश करता है? असुरक्षित स्रोतों/थर्ड-पार्टी ऐप स्टोर्स से ऐप इंस्टॉल करना

  1. एंड्रॉइड कैश क्लियर करने की त्वरित और सुरक्षित गाइड एंड्रॉइड कैश क्लियर करने की त्वरित और सुरक्षित गाइड

    ब्लॉग सारांश – आपके फोन पर अनावश्यक डेटा स्टोरेज भर सकता है। स्मार्ट फोन क्लीनर का उपयोग करके एंड्रॉइड कैश क्लीन करें क्योंकि यह आपके डिवाइस पर अनावश्यक चीजों से छुटकारा पाने का सबसे तेज और आसान तरीका है। समय के साथ, आपका फोन अनावश्यक डेटा से भर जाता है और यह डिवाइस के प्रदर्शन को प्रभावित कर