কম্পিউটার টিউটোরিয়াল

Android WebView-এ লোকাল স্টোরেজে ডেটাবেস সংরক্ষণ করার উপায়

Android WebView-এ লোকাল স্টোরেজ এবং ডেটাবেস ক্যাশিং

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে Android-এ WebView ব্যবহার করে ওয়েবপেজ লোড করার সময় ডেটাবেস এবং ক্যাশ লোকাল স্টোরেজে সংরক্ষণ করা যায়। এটি অফলাইন ব্রাউজিং এবং পারফরম্যান্স উন্নতির জন্য উপকারী।

ধাপ ১: প্রজেক্ট সেটআপ

Android Studio-তে নতুন একটি "Empty Activity" প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (res/layout/activity_main.xml)

<?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:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

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

</LinearLayout>

ধাপ ৩: MainActivity.java-এ WebView কনফিগারেশন

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;
import android.webkit.WebViewClient;

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();

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true); // জাভাস্ক্রিপ্ট সক্রিয় করুন
        
        // ক্যাশ এবং ডেটাবেস পাথ সেট করুন
        String appCachePath = getApplicationContext().getFilesDir().getAbsolutePath() + "/cache";
        String databasePath = getApplicationContext().getFilesDir().getAbsolutePath() + "/databases";
        
        settings.setAppCachePath(appCachePath);
        settings.setDatabasePath(databasePath);
        settings.setAppCacheEnabled(true);
        settings.setDatabaseEnabled(true);
        settings.setDomStorageEnabled(true); // LocalStorage সক্রিয় করুন

        // WebViewClient সেট করুন (লিঙ্ক ক্লিক(WebView-এই খুলবে))
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        // WebChromeClient প্রোগ্রেস মॉनিটরিং-এর জন্য
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                if (progress < 100) {
                    progressDialog.show();
                }
                if (progress == 100) {
                    progressDialog.dismiss();
                }
            }
        });

        // ফেসবুক মোবাইল ভার্সন লোড করুন
        webView.loadUrl("https://touch.facebook.com/");
    }
}

ধাপ ৪: Manifest-এ ইন্টারনেট পারমিশন

<?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" />

    <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>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

মূল বিষয়াবলী

  • setAppCachePath(): অ্যাপ্লিকেশন ক্যাশ সংরক্ষণের ডিরেক্টরি নির্দিষ্ট করে
  • setDatabasePath(): Web SQL Database বা IndexedDB ডেটা সংরক্ষণের পাথ
  • setDomStorageEnabled(true): HTML5 localStorage/sessionStorage সক্রিয় করে
  • setAppCacheEnabled(true): অ্যাপ্লিকেশন ক্যাশ API সক্রিয় করে
  • ProgressDialog: পেজ লোডিং অবস্থা দেখানোর জন্য

সর্বোত্তম অভ্যাস

  1. WebView-এ JavaScript সক্রিয় রাখুন আধুনিক ওয়েবসাইটের জন্য
  2. ক্যাশ সাইজ লিমিট করুন (setAppCacheMaxSize) স্টোরেজ বাঁচাতে
  3. নেটওয়ার্ক অপ্রাপ্যতায় ক্যাশড কন্টেন্ট দেখানোর লজিক যোগ করুন
  4. সensitivity ডেটা (পাসওয়ার্ড, টোকেন) লোকাল স্টোরেজে সংরক্ষণ এড়ান

Android WebView-এ লোকাল স্টোরেজে ডেটাবেস সংরক্ষণ করার উপায়

  1. অ্যান্ড্রয়েডে লোকাল নোটিফিকেশন শিডিউল করা

  2. অ্যান্ড্রয়েড অ্যাপে WebView তৈরির পদ্ধতি

  3. অ্যান্ড্রয়েডে ছবি সরাসরি এসডি কার্ডে সেভ: ধাপে ধাপে গাইড

  4. Android স্টোরেজ মাস্টার করুন: স্পেস বাড়াতে ও পারফরম্যান্স বাড়াতে ১০ প্রমাণিত উপায়