我系统中的一个应用程序可以处理像“weibo:// abc”这样的URI,我想使用此URI启动意图。但是在启动这个URI之前的其他机器中我需要检查这个URI是否可以正确处理(没有大的延迟),我该怎么做?
答案 0 :(得分:1)
您可以使用PackageManager.queryIntentActivities()
获取可以处理此Intent的活动列表。
以下代码检查是否可以处理意图。它来自Android开发人员“Can I Use This Intent?”文章。
/**
* Indicates whether the specified action can be used as an intent. This
* method queries the package manager for installed packages that can
* respond to an intent with the specified action. If no suitable package is
* found, this method returns false.
*
* @param context The application's environment.
* @param action The Intent action to check for availability.
*
* @return True if an Intent with the specified action can be sent and
* responded to, false otherwise.
*/
public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list =
packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
像这样使用它:
if (isIntentAvailable(MyActivity.this,"weibo://abc"){
//safe to startActivity here
} else {
//no receiver for this activity
}
答案 1 :(得分:0)
也许我错了,但为什么可以认为Android可以自动处理它?
如果我对您的需求没有错,我的回答是使用this微博SDK查看URI是否正常,那么您无需考虑Android是否有支持。
答案 2 :(得分:0)
我可能会选择“吮吸它并看到”方法。拨打电话,看看你得到了什么。无论如何,你必须处理错误情况,我会添加一些在没有可用于处理意图的应用程序时触发的内容。