Intent を投げる前にするとよいメモ

Lollipop 純正デフォルトでは, Chrome が標準でブラウザはこれひとつ.

Chromeをアンインストールすると暗黙的インテントで行き場所がなく落ちていた.

...
Uri uri = Uri.parse("http://www.yahoo.com/");
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
...

Intent.ACTION_VIEW てそんなに拾われないのか, などと思ったが.

あらかじめ, 投げる前にチェックしておくといいのか.

...
public static boolean isIntentAvailable(Context ctx, Intent intent) {
  final PackageManager mgr = ctx.getPackageManager();
  List<ResolveInfo> list =
    mgr.queryIntentActivities(intent, 
      PackageManager.MATCH_DEFAULT_ONLY);
  return list.size() > 0;
} 
...

あと, startActivityForResult() から呼ばれるActivityの終了.

...
@Override
public void finish() {
  Intent data = new Intent();
  data.putExtra("return1", "XXX");
  data.putExtra("return2", "YYY");
  setResult(RESULT_OK, data);
  super.finish();
} 
...

finish()を上書きしておくとスッキリする.


関連ワード:  Android開発