如何绕过“使用...完成操作”?
Posted
技术标签:
【中文标题】如何绕过“使用...完成操作”?【英文标题】:How do I bypass the "Complete Action Using ..."? 【发布时间】:2010-12-24 03:16:27 【问题描述】:当在 android 中显示“使用完成操作”对话框时,我有一个关于以编程方式选择应用程序的问题。
一个例子如下: 在我的代码中,我有这样的声明:
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.youtube.com/watch?v=98yl260nMEA")));
然后我会看到一个包含两个选项的对话框: 使用浏览器或 YouTube 完成操作
知道如何在不显示对话框的情况下选择 YouTube 吗?
【问题讨论】:
您找到解决方案了吗? 这能回答你的问题吗? Android Eliminate Complete Action Using dialog @Tomerikoo 这似乎是另一种情况,他们试图启动他们自己的应用程序的组件。请注意,答案建议修改意图过滤器:他们不能很好地修改 YouTube 或其浏览器的意图过滤器。 【参考方案1】:我认为您将需要有关您要默认启动的应用程序(在本例中为 youtube 应用程序)的意图过滤器的更多信息。该目标应用程序可能有多个意图过滤器,其中一个可能更具体。您可以使用该特定意图调用 startActivity,然后将直接启动预期的应用程序。但是,这需要您对目标应用程序有更多的了解(这在大多数情况下很难,例如 Youtube 应用程序)。
除此之外,我不认为您可以在您的应用程序中做很多事情。 Intent 解析是由 Android 框架完成的,因此如果用户应用程序可以以某种方式覆盖它,这将是安全方面的缺陷。
【讨论】:
嗯……有点道理。谢谢,杰伊什。我有这段代码(但它只向我显示了建议使用的应用程序 - 在这种情况下是浏览器和 YouTube) PackageManager pm = getPackageManager(); ListPackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse(youtube.com/watch?v=Zi_XLOBDo_Y)), 0);
Iterator<ResolveInfo> actList = activities.iterator();
while(actList.hasNext())
ResolveInfo curr = actList.next();
Log.d("Intents =====> ", curr.toString() + " " + curr.match + " " + curr.isDefault);
【讨论】:
以上是关于如何绕过“使用...完成操作”?的主要内容,如果未能解决你的问题,请参考以下文章
如何绕过 Google reCAPTCHA 使用 Selenium 进行测试
如何使用 Selenium 和 Python 绕过 Google 验证码?