Intent概要
複数のアプリケーションや異なるActivityを繋ぐことが可能であり、
データの受け渡しも出来る仕組みです。
インテントは、2種類あり、明示的インテント、暗黙的インテントに分かれます。
それでは、明示的インテントから解説していきます。
明示的インテント
アクティビティをクラス名で指定して呼び出す
SendIntentActivity.java 送信元
CatchIntentActivity.java 送信先
SendIntentActivity.java
//buttonを取得
Button btn = (Button)findViewById(R.id.Button01);
btn.setOnClickListener(button1ClickListener);
OnClickListener button1ClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
//CatchIntentActivityへintentを送る
Intent intent = new Intent();
intent.setClassName(this, CatchIntent);
//putExtraメソッドは、多くの型に対応している(int,String,boolean, Bundleなど)
intent.putExtra("testString", "this is intent string");
startActivity(intent);
}
};
SendIntentActivityで、 ボタンがクリックされた時に、送信先である
CatchIntentActitivity へ、パラメータ付きで送信している。
CatchIntentActivity.java
Intent intent = getIntent();
if (intent != null) {
String str = intent.getStringExtra("testString");
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
}
インテントを取得して、nullじゃないなら、送信先で指定した “testString”というkeyを引数にし、データを取得している。 最後に、androidのToastで出力している。
※Toastを知らない人は、画面上にメッセージが 数秒出てくるものだと考えてください。
intent取得メソッド
String型:getStringExtra() 戻り値がない場合、null
int型:getIntExtra() 第2引数に、キーが存在しない場合の値をセットする
boolean型:getBooleanExtra() 第2引数に、キーが存在しない場合の値をセットする
HashMap型 :getSerializableExtra(); 戻り値がない場合、null
コード例:
Intent intent = getIntent();
String keyword = intent.getStringExtra("keyword");
boolean flg = intent.getBooleanExtra("flg", false);
int status = intent.getIntExtra("status", 0);
その他、上記で記載してなかったメソッドで重要なもの startActivityForResult()
こちらは、CatchIntentActivityで何かの処理をさせて、 再び、SendIntentActivityに戻したいときなどに使います。
SendIntentActivity(上記のプログラム記述とほとんど同じです。)
//buttonを取得
Button btn = (Button)findViewById(R.id.Button01);
btn.setOnClickListener(button1ClickListener);
OnClickListener button1ClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
//CatchIntentActivityへintentを送る
Intent intent = new Intent();
intent.setClassName(this, CatchIntent);
//putExtraメソッドは、多くの型に対応している(int,String,boolean, Bundleなど)
intent.putExtra("testString", "this is intent string");
startActivityForResult(intent);
}
};
CatchIntentActivity.java
Intent intent = getIntent();
if (intent != null) {
String str = intent.getStringExtra("testString");
//何かの処理など
}
intent.putExtra("test2String", "from CatchIntentActivity");
intent.Result(RESULT_OK, intent);
finish();
SendIntentActivity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
String str = intent.getStringExtra("test2String");
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
//キャンセル処理
}
}
暗黙的インテント
ここからは、暗黙的インテントについて解説していきます。
暗黙的とは、はっきりと示さないことを意味しています。
宛先のオブジェクトを明示的に指定せず、
Intentのパラメータに、以下のように埋め込むことにより、
対象となるオブジェクト(Activity、Service、BroadcastReceiver)が呼び出される。
使い方
Webブラウザを起動する
アプリケーション: Webブラウザ
アクション:Intent.ACTION_VIEW(android.intent.action.VIEW)
URL:「http://」「https://」で始まるURL形式
コード例:
Uri uri = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
メールアプリを起動する
アプリケーション: メール送信
アクション:Intent. ACTION_SEND(android.intent.action.SEND)
URL:「mailto:hoge@example.com」
コード例:
Uri uri = Uri.parse(“mailto:hoge@example.com”); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);