このためcontext.startActivity(new Intent(Intent.ACTION_VIEW, uri));
でブラウザを起動させようとしたとき、呼応するブラウザがないという状況があり得るようになった。
上記でブラウザを呼び出そうとするときにはIntentに呼応するブラウザがあるかを確認してから
startActivityする。
コードは以下
public static void startActivityWithBrowserCheck(Uri uri, Context context) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
List resInfo = context.getPackageManager()
.queryIntentActivities(intent, 0);
if (resInfo.isEmpty()) {
new AlertDialog.Builder(context)
.setMessage("ブラウザが無効になっているため、\n有効にしてください。")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
} else {
context.startActivity(intent);
}
}
https://gist.github.com/4281897
gistのリンクの張り方わからん
12/17追記
外部アプリを呼び出す系のstartActivityはtry{}catchした方が正しいのかも。
0 件のコメント:
コメントを投稿