Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】文字列をBase64でエンコードする方法をわかりやすく解説

はじめに

この記事では、Androidアプリで入力された文字列をBase64形式でエンコードする方法を、実際のサンプルコードとともにステップごとに解説します。Base64は、文字列やバイナリデータを安全に送受信・保存するために広く使われるエンコード方式です。Androidでは標準ライブラリの android.util.Base64 クラスを使うことで、簡単にエンコード処理を実装できます。

手順1:Android Studioで新規プロジェクトを作成する

まず、Android Studioを起動し、メニューから「File」⇒「New Project」を選択して、必要な項目を入力のうえ新しいプロジェクトを作成してください。

手順2:レイアウト(activity_main.xml)を作成する

次に、res/layout/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"
    android:gravity="center_horizontal"
    android:layout_marginTop="30dp"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/edit_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/buttonPanel"
        android:text="Check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

このレイアウトでは、ユーザーが文字列を入力するための EditText、エンコードを実行する Button、そして結果を表示する TextView を縦方向に配置しています。EditTextに値を入力した状態でボタンをタップすると、その文字列がエンコードされる仕組みです。

手順3:MainActivity.java にコードを追加する

続いて、src/MainActivity.java に以下のコードを記述します。

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView text;
    EditText edit_query;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edit_query = findViewById(R.id.edit_query);
        text = findViewById(R.id.text);
        findViewById(R.id.buttonPanel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!edit_query.getText().toString().isEmpty()) {
                    String encode = Base64.encodeToString(edit_query.getText().toString().getBytes(), Base64.DEFAULT);
                    text.setText(encode);
                }
            }
        });
}
}

ポイントは以下の1行です。

String encode = Base64.encodeToString(edit_query.getText().toString().getBytes(), Base64.DEFAULT);
  • EditTextに入力された文字列を getBytes() でバイト配列に変換
  • Base64.encodeToString() に渡してBase64形式の文字列へ変換
  • エンコード結果をTextViewにセットして画面に表示

なお、isEmpty() チェックにより、入力が空の場合はエンコード処理が行われないようになっています。これにより、意図しない動作やクラッシュを防ぐことができます。

アプリを実行して結果を確認する

それでは、アプリケーションを実行してみましょう。ここでは、実機のAndroidスマートフォンがPCに接続されているものとします。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルのいずれかを開き、ツールバーのRunアイコンをクリックします。デバイス選択ダイアログでお使いのスマートフォンを選択すると、端末に初期画面が表示されます。

【Android開発】文字列をBase64でエンコードする方法をわかりやすく解説

上記の実行結果のように、EditTextに入力した文字列がBase64形式にエンコードされ、TextViewに表示されていることが確認できます。たとえば「Hello」と入力すると、「SGVsbG8=」のような文字列が出力されます。

まとめ

このように、Androidでは android.util.Base64 クラスの encodeToString() メソッドを使うことで、わずか数行のコードで文字列をBase64エンコードできます。APIとの通信時の認証トークン生成や、データの一時的な文字列化など、さまざまな場面で活用できるので、ぜひ参考にしてください。なお、デコードが必要な場合は Base64.decode() を使用することで元の文字列に戻せます。

  1. 【Android】セカンドアクティビティからメインアクティビティへデータを返す方法を解説

    このチュートリアルでは、Androidアプリにおいてセカンドアクティビティからメインアクティビティへデータ(処理結果)を返す方法を、サンプルコードを交えて解説します。2つの数値を入力して別画面へ渡し、その画面での計算結果を元の画面に表示させるアプリを例に、データ受け渡しの基本を学びましょう。ポイントは startActivityForResult() と onActivityResult() の2つです。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力して新しいプロジェクトを作成します。 ス

  2. Android端末のメインメールアドレスを取得する方法をサンプルコード付きで解説

    本記事では、Android端末に登録されているメインのメールアドレスを取得する方法を、実際のサンプルコードとともにわかりやすく解説します。AccountManagerとGET_ACCOUNTS権限を活用することで、端末に設定されたアカウント情報からメールアドレスを取得できます。 手順1:Android Studioで新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力して新しいプロジェクトを作成します。 手順2:res/layout/activity_main.xml にコードを追加する 以下のコードをレイアウト