1

私のアプリには、GooglePlay の別のアプリケーションのページにつながる (正確には :) につながるボタンがあります。ボタンのクリック反応は次のとおりです。

public void pressedPurchaseButton(View view)
{
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.infmanrb.multrainer"));
    startActivity(browserIntent);
}        

ただし、エミュレーターでは、ボタンを押すと例外が発生します。

Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.infmanrb.multrainer }

GooglePlay が Emulator にインストールされていないと思います - それが理由です。とにかく、アプリケーションのクラッシュを回避する正しい方法は何ですか? Intent が処理されるかどうかを事前に確認できますか? または唯一の方法は、例外をキャッチしようとすることですか?

4

1 に答える 1

1

次のようなユーティリティ メソッドを使用します。

public static boolean isIntentHandleable(Context context, String action) {
    final PackageManager manager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> list =
        manager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

アクションとして必要なインテントと、もちろんコンテキスト参照を渡します。これが false を返す場合、このアクションは処理できません。

このリンクも確認してください:インテントURIが利用可能かどうかを確認してください

于 2012-10-02T10:22:42.900 に答える