gpt4 book ai didi

android如何知道一个协议(protocol)可以被处理?

转载 作者:行者123 更新时间:2023-11-30 04:30:39 25 4
gpt4 key购买 nike

我系统中的一个应用程序可以处理像“weibo://abc”这样的URI,我想使用这个URI 启动 Intent 。但是在启动这个 URI 之前在其他机器上我需要检查这个 URI 是否可以正确处理(没有大的延迟),我应该怎么做?

最佳答案

您可以使用 PackageManager.queryIntentActivities() 获取可以处理此 Intent 的 Activity 列表。

以下代码检查是否可以处理 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
}

关于android如何知道一个协议(protocol)可以被处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com