個人で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(); } } });
全部を自分で実装しなくても、入り口だけ作ってあとは他のアプリにデータを渡せるってのは、便利ですねぇ。