2012-10-02 122 views
1

我的应用有一个按钮,该按钮可导致(应该引导,准确:))到GooglePlay中另一个应用的页面。按钮的点击反应如下:Android:尝试访问商店时抛出异常

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是不是在模拟器安装 - 这就是原因。但无论如何,避免应用程序崩溃的正确方法是什么?我能否提前检查意向是否会被处理?或者唯一的方法是尝试捕捉异常?

+1

确实能起到不安装在模拟器上。为了避免崩溃,您可以要求内容解析器简单地捕获异常 – njzk2

回答

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; 
} 

传递要为行动及ofcourse上下文参考意图。如果这返回false,则无法处理此操作。

检查此链接,以及:Check if intent uri is available

相关问题