インテント

インテントを使いアクティビティ間の連携を取ることが出来る。

アプリ内にある別のアクティビティを呼び出すときは、 Activityクラスを継承したクラスを指定する。

Intent it = new Intent(this, SubActivity.class);
startActivity(it);
		

この場合はSubActivityというActivityクラスを継承したアクティビティが呼び出される。

別のアプリケーションのアクティビティを呼び出すときはACTIONを指定する。

Intent it = new Intent(Intent.ACTION_SEND);
startActivity(it);
		

この場合はSENDを受け付けるアクティビティが呼び出される。
受け付けるアクティビティが本体内に複数存在する場合は一覧として表示される。
なおアクションにはSEND以外にも"VIEW"や"PICK"などもある。

投げられたインテントを受け付けるには、マニフェストファイルの インテントフィルターに記述する必要がある。

<intent-filter>
	<action android:name="android.intent.action.SEND" />
	<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
		

この場合はSENDを受け付けることができる。
インテントフィルターの指定にはaction、category以外にdataなどもある。

他のアクティビティにデータを渡したい場合はIntent.putExtraメソッドを使う。

Intent it = new Intent(Intent.ACTION_SEND);
intent.putExtra("name", "value");
startActivity(it);
		

putExtraメソッドの第一引数はキー、第二引数は渡したいデータとなり、 この場合はSENDを受け付けるアクティビティにvalueという文字列を渡すことができる。

他のアクティビティからデータを受け取りたい場合はIntent.getStringExtraメソッドを使う。

Intent intent = getIntent();
String text = intent.getStringExtra("name");
		

この場合は"name"というキーで渡されたデータを取得している。
キーについてはIntentクラスで定義されているIntent.EXTRA_TEXTや Intent.EXTRA_SUBJECTなども指定することができる。