の1つ目 Sending the User to Another App を始めていきます。
アプリ同士の情報のやり取りについての話です。
例えば、
自分のアプリで入力したURLのページをブラウザで見たいな
なんてとき、
自分のアプリにブラウザ機能をつけたりせずに
入力したURL情報をブラウザに送る機能です。
まずインテントを作成します。
インテントは Building Your First App part3 でもやりました。
アクティビティ間でやり取りするためのパラメータです。
このインテントには
明示的インテント
インテントを送る側がアプリを特定して発送する。
暗黙的インテント
送る時点ではどのアプリが使うかを決定していない。
の2種類があります。今回は暗黙的インテントを使います。
これは電話番号をやり取りする意図で作成
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
ACTION_DIAL この部分を用途に合わせて切替ます。
ブラウザなら ACTION_VIEW といった具合に
もし、複数のデータを送るなら
putExtra() を使ってインテントを拡張します。
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
...
次に、インテントを送るアプリが存在するかのチェックです。
queryIntentActivities( を使います。
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
そして、アプリを起動させます。
startActivity( を使います。
if (isIntentSafe) {
startActivity(Intent);
}
もし、ユーザーに起動するアプリを選ばせる場合
App Chooser を使い選択画面を表示します。
Intent intent = new Intent(Intent.ACTION_SEND);
...
String title = getResources().getText(R.string.chooser_title);
Intent chooser = Intent.createChooser(intent, title);
startActivity(chooser);
こういった情報のやり取りがシステム側で対応がなされてるのは
かなり便利ですね

今日はこれまでー。