インテントって何のこと?
Android開発をする時に一番はじめにぶち当たるのがこれではないかと思っています。
「画面の遷移にも使うけど一体何の役割をしているのだろうか?」
自分なりにインテント(Intent)について調べたことを記載していきます。間違いがあればご指摘願います。
インテントとはAndroidにアクションをリクエストする時に渡すもの

「ActivityA」から別の画面(ActivityB)を起動したいとき、StartActivityと共にIntentを渡しています。
このIntentはAndroidSystemに対して「ActivityBを開いてください!」と伝えるためのものです。
伝えられたAndroidSystemはActivityBを開始してくれます。
これがインテントでありメッセージングオブジェクトとも呼ばれています。
どんな時に使うのか?
Intentの基本的な使い方として以下の3つがあります。
- Activityを起動する
- Serviceを起動する
- ブロードキャストを配信する
こうやって見てみると、現在のActivityだけでは完結しないことをAndroidSystemにお願いして実行してもらっているというのが分かるかと思います。
どのような種類があるのか?
インテントには明示的インテントと暗黙的インテントの2つがあります。それぞれ実例を交えて説明します。
明示的インテント(Explicit Intents)
これは独自に作成したActivityやService起動をする時に使用します。
明示的というのはこのActivityを起動してくれと名前を明示的に指定します。
以下の例はボタンを押したら紫色の画面が開くだけのアプリです。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = findViewById(R.id.textView);
btn1 = findViewById(R.id.btn);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//明示的 Intent
Intent i = new Intent(getApplicationContext(),Activity2.class);
startActivity(i);
}
});
}
上記の場合ですと、Activity2(紫の画面)を明示的にしたインテントを作成し、startActiivtyに渡しています。なので明示的なのですね。納得。
暗黙的インテント(Implicit Intents)
暗黙的は明示的の逆でActivityの指定ではなく、Androidで既に定義されているインテントを宣言して渡します。
以下の例はボタンを押したらgoogleのWeb画面が開くだけのアプリです。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//暗黙的インテント
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("https://www.google.com"));
startActivity(i);
}
});
}
}
暗黙的なインテントはシステムの機能を使う場合であったり様々な場面で使用します。
インテントの一覧は公式サイトをご覧下さい。
さいごに
普段iOSばっかりやっていたのでインテント?何じゃそりゃ?と初めは面くらいましたが仕組みがわかれば納得ですね。動きが分かって逆に楽しいです。
読んで頂きありがとうございました。
コメント