3

具体来说,我想弄清楚是否有一个应用程序可以处理市场意图,但我想要一个通用案例解决方案。

我知道如果你做这样的事情,你可以判断是否有一个应用程序可以处理这个意图。我正在尝试做一些实际上并没有启动意图的事情。关于我可以做什么的任何想法?

try
{
    String strURL="market://details?id="+thePackage;
    Intent the_intent = new Intent(Intent.ACTION_VIEW, Uri.parse(strURL));
    the_intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
    startActivity(the_intent)

}
catch (ActivityNotFoundException e)
{
    String strUrl="https://play.google.com/store/search?c=apps&q="+thePackage;

    Intent the_intent = new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl));
    the_intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
    startActivity(the_intent)
}

我想要的是一个不涉及实际启动活动的解决方案。我想这样做有几个原因,但我想我不是唯一一个想到原因的人,似乎必须有一种方法......

4

2 回答 2

8

使用PackageManagerqueryIntentActivities()resolveActivity()。前者将返回 a与要使用List的 an 匹配的事物。后者将返回没有匹配项或“最佳匹配项”(如果有多个匹配项,则可能是选择器活动)。IntentstartActivity()nullIntent

于 2012-12-29T00:44:55.743 回答
0

这是 CommonWare 回答的一个实际例子。

String strURL="market://details?id="+thePackage;
Intent the_intent = new Intent(Intent.ACTION_VIEW, Uri.parse(strURL));
the_intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
Log.v(TAG,""+_context.getPackageManager().queryIntentActivities(the_intent,Intent.FLAG_ACTIVITY_NEW_TASK));
if (_context.getPackageManager().queryIntentActivities(the_intent,0).size()==0)
{
    String strUrl="https://play.google.com/store/search?c=apps&q="+thePackage;
    the_intent = new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl));
    the_intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
}
于 2012-12-29T00:51:13.810 回答