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);