具体来说,我试图弄清楚是否有应用程序来处理市场意图,但我想要一个通用案例解决方案。
我知道如果您执行此类操作,您可以判断是否有可用于处理意图的应用程序。我正在尝试做一些实际上没有启动意图的事情。关于我可能做什么的任何想法?
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)
}
我想要的是一个不涉及实际启动活动的解决方案。我想要这样做有几个原因,但我想我不是唯一一个想到这个原因的人,似乎必须有办法......
答案 0 :(得分:8)
使用PackageManager
和queryIntentActivities()
或resolveActivity()
。前者将返回与List
匹配的Intent
个与startActivity()
一起使用的内容。后者将返回null
没有匹配或Intent
这是“最佳匹配”(如果有多个匹配,则可能是选择器活动)。
答案 1 :(得分: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 );
}