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 没有安装在模拟器上——这就是原因。但是无论如何,避免应用程序崩溃的正确方法是什么?我可以提前查看是否会处理 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 回答