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

Android WebView-এ Assets ফোল্ডার থেকে ফাইল লোড করা

WebView-এ লোকাল HTML ফাইল লোড করা (Assets ফোল্ডার থেকে)

অ্যাপের assets ফোল্ডারে থাকা HTML, CSS, JS ফাইলগুলো file:///android_asset/ URI স্কিম ব্যবহার করে WebView-এ লোড করার পদ্ধতি।

ধাপ ১: প্রজেক্ট তৈরি

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

ধাপ ২: লেআউট (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

ধাপ ৩: Assets ফোল্ডার ও HTML ফাইল তৈরি

  1. Project 뷰-এ main রাইট-ক্লিক → New → Folder → Assets Folder
  2. assets ফোল্ডারে রাইট-ক্লিক → New → File → mytext.html

mytext.html কন্টেন্ট:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Assets HTML</title>
    <style>
        body { font-family: sans-serif; padding: 20px; line-height: 1.6; }
        h1 { color: #2196F3; }
        h2 { color: #4CAF50; }
    </style>
</head>
<body>
    <h1>This HTML file is loaded from the assets folder</h1>
    <h2>Have a nice Day!</h2>
    <p>You can include CSS, JavaScript, images (in assets subfolders) here.</p>
    <button onclick="alert('JS works!')">Test JavaScript</button>
</body>
</html>

ধাপ ৪: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebSettings;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        WebView webView = findViewById(R.id.webView);
        WebSettings settings = webView.getSettings();
        
        // জাভাস্ক্রিপ্ট সক্ষম (যদি HTML-এ JS থাকে)
        settings.setJavaScriptEnabled(true);
        
        // জুম কন্ট্রোল (ঐচ্ছিক)
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(false);
        
        // Assets থেকে HTML লোড
        webView.loadUrl("file:///android_asset/mytext.html");
    }
}

ধাপ ৫: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.webviewassets">
    <application ...>
        <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>

Assets ফোল্ডার স্ট্রাকচার

app/
└── src/
    └── main/
        └── assets/
            ├── mytext.html
            ├── css/
            │   └── style.css
            ├── js/
            │   └── script.js
            └── images/
                └── logo.png

HTML-এ রিলেটিভ পাথ ব্যবহার

<!-- CSS -->
<link rel="stylesheet" href="css/style.css">

<!-- JS -->
<script src="js/script.js"></script>

<!-- Image -->
<img src="images/logo.png" alt="Logo">

নোট: Assets-এ ফাইল পাথ কেস-সেনসিটিভ। সাবফোল্ডার ব্যবহার করলে HTML-এ রিলেটিভ পাথ দিন।

সীমাবদ্ধতা ও সমাধান

সমস্যাসমাধান
CSS/JS লোড হয় নাWebViewClient সেট করুন, mixed content allow করুন
বড় ফাইল লোড ধীরWebViewClient.onPageFinished-এ জাভাস্ক্রিপ্ট এক্সিকিউট করুন
লোকাল ফাইল থেকে AJAXCORS এরর - WebView.setAllowFileAccessFromFileURLs(true) (API 16+)
ফন্ট লোডCSS @font-face-এ file:///android_asset/fonts/font.ttf ব্যবহার করুন

সিকিউরিটি নোট

  • Assets ফাইলগুলো রিড-অনলি, রানটাইমে মডিফাই করা যায় না
  • সংবেদনশীল ডেটা (API Key, Token) Assets-এ রাখবেন না
  • WebView-এ setAllowFileAccess(false) রাখুন যদি এক্সটার্নাল ফাইল অ্যাক্সেস দরকার নাই
  1. অ্যান্ড্রয়েড ফোন থেকে ম্যাকএ ফাইল ট্রান্সফার করার পদ্ধতি

  2. অ্যান্ড্রয়েড ফোন থেকে স্মার্ট টিভিতে ফাইল ট্রান্সফার করার উপায়

  3. Android থেকে Mac-এ ফাইল ট্রান্সফার: ধাপে ধাপে গাইড

  4. অ্যান্ড্রয়েড থেকে পিসিতে ফাইল ট্রান্সফার: দ্রুত ও নিরাপদে ধাপে ধাপে গাইড