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

Android-এ Base64 স্ট্রিং ডিকোড (Decode) করা

Base64 ডিকোডিং: এনকোডেড স্ট্রিং থেকে মূল টেক্সট ফিরে পাওয়া

এই উদাহরণে একটি স্ট্রিংকে Base64-এ এনকোড করে তারপর আবার ডিকোড করে মূল স্ট্রিং পাওয়ার পূর্ণ প্রক্রিয়া দেখানো হলো।

লেআউট (activity_main.xml)

<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"
    android:gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:padding="16dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edit_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="টেক্সট লিখুন" />

    <Button
        android:id="@+id/buttonPanel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Encode & Decode"
        android:layout_marginTop="16dp" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:layout_marginTop="16dp"
        android:padding="16dp"
        android:background="#E8F5E9" />

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:layout_marginTop="8dp"
        android:padding="16dp"
        android:background="#E3F2FD" />

</LinearLayout>

MainActivity.java

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.util.Base64;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.nio.charset.StandardCharsets;

public class MainActivity extends AppCompatActivity {

    TextView tvEncoded, tvDecoded;
    EditText editText;

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

        editText = findViewById(R.id.edit_query);
        tvEncoded = findViewById(R.id.text);
        tvDecoded = findViewById(R.id.text1);

        findViewById(R.id.buttonPanel).setOnClickListener(v -> {
            String input = editText.getText().toString();
            if (!input.isEmpty()) {
                // ১. এনকোড: String → Base64
                String encoded = Base64.encodeToString(
                    input.getBytes(StandardCharsets.UTF_8), 
                    Base64.NO_WRAP // লাইন ব্রেক না
                );
                tvEncoded.setText("Encoded: " + encoded);

                // ২. ডিকোড: Base64 → String
                byte[] decodedBytes = Base64.decode(encoded, Base64.DEFAULT);
                String decoded = new String(decodedBytes, StandardCharsets.UTF_8);
                tvDecoded.setText("Decoded: " + decoded);
            } else {
                tvEncoded.setText("টেক্সট লিখুন");
                tvDecoded.setText("");
            }
        });
    }
}

Base64 ডিকোডিং এর কী পয়েন্ট

  • Base64.decode(String, int flags) - স্ট্রিং থেকে বাইট অ্যারে রিটার্ন করে
  • Base64.decode(byte[], int flags) - বাইট অ্যারে থেকে বাইট অ্যারে
  • ফ্ল্যাগ এনকোডিং-এর সাথে মিলতে হবে (DEFAULT, NO_WRAP, URL_SAFE)
  • StandardCharsets.UTF_8 ব্যবহার করুন ক্যারেক্টার এনকোডিং নিশ্চিত করতে

URL_SAFE মোডে এনকোড/ডিকোড

// URL-সেফ এনকোড (Query Parameter, File Name ইত্যাদির জন্য)
String urlSafeEncoded = Base64.encodeToString(data, Base64.URL_SAFE | Base64.NO_PADDING);

// URL_SAFE ডিকোড
byte[] decoded = Base64.decode(urlSafeEncoded, Base64.URL_SAFE);

ব্যবহার ক্ষেত্রে

  • JWT Token: Header.Payload.Signature (Base64URL encoded)
  • Image Processing: Base64 String ↔ Bitmap কনভারশন
  • Data Transfer: JSON-এ বাইনারি ডেটা পাস করার জন্য
  • Deep Link: জটিল ডেটা URL-এ পাস করার জন্য

ত্রুটি হ্যান্ডলিং

try {
    byte[] decoded = Base64.decode(encodedStr, Base64.DEFAULT);
    String result = new String(decoded, StandardCharsets.UTF_8);
} catch (IllegalArgumentException e) {
    // Invalid Base64 string
    Log.e("Decode", "Invalid Base64 input", e);
}

Android-এ Base64 স্ট্রিং ডিকোড (Decode) করা

  1. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ফোন নম্বর পাওয়ার পদ্ধতি

  2. অ্যান্ড্রয়েডে ছবিকে Base64 স্ট্রিং-এ রূপান্তর করার পদ্ধতি

  3. Android-এ সেকেন্ডারি অ্যাক্টিভিটি থেকে মেইন অ্যাক্টিভিটিতে ডেটা পাঠানোর পদ্ধতি

  4. Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি