Fry in the Web

次からこうしようと思ったことを書き残しておきます

Android Intentまとめ

明示的インテント

誰(Activity)を呼びたいかを示して遷移するインテント

単純な画面遷移
Intent intent = new Intent(context, TestActivity.class);
this.startActivity(intent);

Intentのコンストラクタの第二引数にはアクティビティを拡張したクラス名を記述します

終了
this.finish();

ちなみに端末の戻るボタンを押した際も上の処理が行われています。

呼び出し先から結果を返して欲しい

呼び出し方は以下です

Intent intent = new Intent(context, TestActivity.class);
this.startActivityForResult(intent, REQUEST_CODE);

startActivityForResultの第二引数REQUEST_CODEはint型の定数です。
自分で1でも2でも好きなように設定して構いません
受け取った際処理分けを行うときに使います。

呼び出されるアクティビティでは以下のように結果を返します

Intent intent  = new Intent();
 intent.putExtra("key","IntentWorld");
setResult(RESULT_OK,  intent);

finish();

これで呼び出し元のアクティビティがputExtraを介してテキストを受け取れます
受け取り側はonActivityResultをオーバーライドします
このメソッドは呼び出されたアクティビティのfinish();後に呼ばれ、
第一引数に最初に設定したREQUEST_CODE、
第二引数にresultCode(Android OSにRESULT_OKとして定数が宣言されている)
第三引数にExtraを含んだIntentが入ります

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String stringData=data.getStringExtra("key");
              Toast.makeText(this, stringData, Toast.LENGTH_LONG).show();
       
    }
}||<

*暗黙的インテント
***検索
検索出来ます
>|java|
String query = "Fly the Web";
Intent i = new Intent(Intent.ACTION_WEB_SEARCH);
i.putExtra(SearchManager.QUERY, query);
startActivity(i);
URLを開きます
String url = "http://www.google.com";
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
写真を選ばせたいときはこれ
Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
    i.setType("image/*");  
    i.addCategory(Intent.CATEGORY_OPENABLE);