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

Androidのインテントには何種類ある?明示的・暗黙的インテントの違いと実装方法を徹底解説

インテント(Intent)とは?

インテントの種類を学ぶ前に、まず「インテントとは何か」を理解しておきましょう。インテントとは、特定のアクションを実行するための仕組みであり、主に以下のような目的で使用されます。

  • アクティビティ(Activity)の起動
  • ブロードキャストレシーバーへの送信
  • サービス(Service)の開始
  • 2つのアクティビティ間でのメッセージ(データ)の受け渡し

Androidで使用できるインテントは、「明示的インテント(Explicit Intent)」と「暗黙的インテント(Implicit Intent)」の2種類です。

Androidのインテントには何種類ある?明示的・暗黙的インテントの違いと実装方法を徹底解説

明示的インテント(Explicit Intent)とは

明示的インテントは、アプリ内部の世界をつなぐためのものです。具体的には、アクティビティの起動や、2つのアクティビティ間でのデータ送信などに使用します。

新しいアクティビティを起動するには、Intentオブジェクトを作成し、遷移元のアクティビティと遷移先のアクティビティを引数として渡します。

Intent send = new Intent(MainActivity.this, SecondActivity.class);
startActivity(send);

また、遷移先のSecondActivityはManifest.xmlファイル内で必ず宣言する必要があります。宣言しない場合、実行時例外(ランタイムエラー)が発生します。

<activity android:name = ".SecondActivity"></activity>

暗黙的インテント(Implicit Intent)とは

一方、暗黙的インテントは、アプリ外部の機能と連携するために使用します。電話発信、メール送信、Webサイトの表示などがその代表例です。

暗黙的インテントでは、setAction()メソッドを使って実行したいアクションを指定します。

Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("www.tutorialspoint.com"));
startActivity(i);

上記の例では、アクションとして「VIEW(表示)」を指定しています。そのため、setData()メソッドで渡したデータ(URI)が画面に表示される仕組みです。

データ指定に使う3つのメソッドの違い

setData()          … URIのみを指定するメソッド
setType()          … MIMEタイプのみを指定するメソッド
setDataAndType()   … URIとMIMEタイプの両方を指定するメソッド

実装例:暗黙的インテントでWebサイトを開く方法

ここからは、実際にインテントを使用してWebサイトを開くサンプルアプリの作成手順を紹介します。

ステップ1:プロジェクトの新規作成

Android Studioで新しいプロジェクトを作成します。「File → New Project」を選択し、必要な情報を入力してプロジェクトを作成しましょう。

ステップ2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout
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">
<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center"
    android:orientation = "vertical">
    <Button
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:text = "Start website"
        android:id = "@+id/send"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

ステップ3:MainActivity.java の編集

src/MainActivity.java に以下のコードを追加します。ボタンがクリックされたときに、ACTION_VIEWアクションを持つ暗黙的インテントを発行し、ブラウザでWebサイトを開く処理を実装しています。

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button send = findViewById(R.id.send);
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setAction(Intent.ACTION_VIEW);
                i.setData(Uri.parse("https://www.tutorialspoint.com"));
                startActivity(i);
            }
        });
    }
}

ステップ4:インターネット権限の追加

Webサイトを開くにはインターネット権限が必要です。AndroidManifest.xml に以下のように uses-permission を追加してください。

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

アプリの実行と動作確認

それでは、実際にアプリを実行してみましょう。Android端末をパソコンに接続した状態で、Android Studioからプロジェクト内のアクティビティファイルを開き、ツールバーの実行ボタンAndroidのインテントには何種類ある?明示的・暗黙的インテントの違いと実装方法を徹底解説をクリックします。接続したモバイルデバイスを選択すると、端末に以下のような初期画面が表示されます。

Androidのインテントには何種類ある?明示的・暗黙的インテントの違いと実装方法を徹底解説

次に「Start website」ボタンをタップすると、暗黙的インテントによってブラウザが起動し、tutorialspointのWebサイトへリダイレクトされます。

Androidのインテントには何種類ある?明示的・暗黙的インテントの違いと実装方法を徹底解説

まとめ

Androidのインテントには、アプリ内部の画面遷移やデータ受け渡しに使う「明示的インテント」と、外部アプリ(ブラウザ、電話、メールなど)と連携する「暗黙的インテント」の2種類があります。用途に応じて適切に使い分けることで、柔軟で使いやすいAndroidアプリを開発できます。ぜひ本記事のサンプルコードを参考に、実際に手を動かして試してみてください。

  1. パソコンのキーボードにあるキーの種類と役割を徹底解説

    キーボードが発明されて以来、アルファベットキーでの文章入力や、数字キーを使った会計作業など、多くの文書作成業務が格段に効率化されました。さらにテクノロジーの急速な進化に伴い、キーボードはスマートフォンにも搭載されるようになり、より身近な存在となっています。現代では、キーボードなしでは完了できない作業も少なくありません。 日々の作業をスピードアップするためには、キーボードを深く理解することが重要です。その第一歩として、コンピューターのキーボードに搭載されているキーの種類を把握しておきましょう。この記事では、キーボード上の各キーの種類と、それぞれの機能について詳しく解説します。 パソコンのキーボ

  2. ゲーミング キーボードのキーの数は?

    ここ数年、世界のゲーム市場の成長は著しく増加しています。最高のゲーム体験を得るために、ゲーマーは自分のゲーム デバイスをよく理解する必要があります。理解しておくべき重要な概念の 1 つは、キーボードのフォーム ファクターです。これは基本的に、キーボードの物理的な形状とサイズ、およびキーボードにあるキーの数を指します。 フルサイズのキーボードには 104 ~ 109 個のキーがあります。テンキーレス (TKL) キーボードには約 87 個のキーがあり、65 % キーボードには 66 ~ 68 個のキーがあり、60 % キーボードには約 61 個のキーがあります。 キーボードのフォーム フ