個人でAndroidアプリを思いつきで作ったのですが(まだリリースしてない)、そのときに他のアプリを呼び出したいなぁと思ったのだけれど、やり方がわからなかったんで調べました。自分で作ったアクティビティだけに限りませんが、特定のアクティビティを呼び出すのを明示的Intent呼び出しというのに対して、とりあえずIntentを作ってデータを放って、ユーザ側にアプリを選択させるのを暗黙的Intent呼び出しというらしいですね。
参考にさせてもらったのは以下のサイトです。
Intent(インテント)連携をまとめてみる – コードを貼り付けながら。
今回はEditTextに入力された内容を、メーラーやtwitterクライアントに対して渡すというのを実装してみました。
// ActivityのonCreate内
// 他のインテントを呼び出す
btnCollaboration.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String data = editText.getText().toString();
if (data.length() > 0) {
try {
// メーラーやtwitterクライアントなどを呼び出す
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, data);
startActivity(Intent.createChooser(intent, getString(R.string.txt_please_select)));
} catch (ActivityNotFoundException e) {
e.printStackTrace();
// 呼び出せるActivityが存在しない
Toast.makeText(VoiceEditor.this, R.string.txt_no_collaboration_found, Toast.LENGTH_SHORT).show();
}
} else {
// EditTextにデータがないのでToast呼び出し
Toast.makeText(VoiceEditor.this, R.string.txt_no_text, Toast.LENGTH_SHORT).show();
}
}
});
全部を自分で実装しなくても、入り口だけ作ってあとは他のアプリにデータを渡せるってのは、便利ですねぇ。
