Android 我该如何绕过这个“问题”;使用…“完成操作”;?
我有一个关于在Android中显示“Complete Action Using”对话框时以编程方式选择应用程序的问题 例如: 在我的代码中,我有以下声明:Android 我该如何绕过这个“问题”;使用…“完成操作”;?,android,android-intent,action,Android,Android Intent,Action,我有一个关于在Android中显示“Complete Action Using”对话框时以编程方式选择应用程序的问题 例如: 在我的代码中,我有以下声明: startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=98yl260nMEA"))); 然后,我将看到一个包含两个选项的对话框: 使用浏览器或YouTu
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.youtube.com/watch?v=98yl260nMEA")));
然后,我将看到一个包含两个选项的对话框:
使用浏览器或YouTube完成操作
你知道如何在不显示对话框的情况下选择YouTube吗?我想你需要更多关于默认情况下要启动的应用程序(在本例中为YouTube应用程序)的意图过滤器的信息。该目标应用程序可能有多个意图过滤器,其中一个可能更具体。你可以用特定的意图调用startActivity,然后直接启动预期的应用程序。然而,这需要你对目标应用有更多的了解(在大多数情况下,像Youtube应用,这是很困难的)
除此之外,我不认为你可以在你的应用程序中做很多事情。意向解析是由Android框架完成的,因此,如果用户应用程序能够以某种方式覆盖它,这将是安全方面的一个缺陷。我认为您需要更多关于默认情况下要启动的应用程序(在本例中为youtube应用程序)的意向过滤器的信息。该目标应用程序可能有多个意图过滤器,其中一个可能更具体。你可以用特定的意图调用startActivity,然后直接启动预期的应用程序。然而,这需要你对目标应用有更多的了解(在大多数情况下,像Youtube应用,这是很困难的)
PackageManager 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);
}
除此之外,我不认为你可以在你的应用程序中做很多事情。意图解析是由Android框架完成的,因此,如果用户应用程序能够以某种方式覆盖它,这将是安全方面的一个缺陷。PackageManager pm=getPackageManager();
PackageManager 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);
}
列表活动=pm.querytentActivities(新意图(Intent.ACTION_视图,Uri.parse(youtube.com/watch?v=Zi_XLOBDo_Y)),0);
迭代器actList=activities.Iterator();
while(actList.hasNext()){
ResolveInfo curr=actList.next();
Log.d(“意图===>”,curr.toString()+“”+curr.match+“”+curr.isDefault);
}
PackageManager pm=getPackageManager();
列表活动=pm.querytentActivities(新意图(Intent.ACTION_视图,Uri.parse(youtube.com/watch?v=Zi_XLOBDo_Y)),0);
迭代器actList=activities.Iterator();
while(actList.hasNext()){
ResolveInfo curr=actList.next();
Log.d(“意图===>”,curr.toString()+“”+curr.match+“”+curr.isDefault);
}
hmm。。。有些道理。谢谢,杰耶什。我有这段代码(但它只向我显示建议使用的应用程序-在本例中是浏览器和YouTube)PackageManager pm=getPackageManager();List activities=pm.queryIntentActivities(新的Intent(Intent.ACTION_视图,Uri.parse()),0);迭代器actList=activities.Iterator();而(actList.hasNext()){ResolveInfo curr=actList.next();Log.d(“意图===>”,curr.toString()+“”+curr.match+“”+curr.isDefault);}hmm。。。有些道理。谢谢,杰耶什。我有这段代码(但它只向我显示建议使用的应用程序-在本例中是浏览器和YouTube)PackageManager pm=getPackageManager();List activities=pm.queryIntentActivities(新的Intent(Intent.ACTION_视图,Uri.parse()),0);迭代器actList=activities.Iterator();(actList.hasNext(){ResolveInfo curr=actList.next();Log.d(“意图===>”,curr.toString()+“”+curr.match+“”+curr.isDefault);}您找到了解决方案吗?这是否回答了您的问题@Tomerikoo这似乎是另一种情况,他们正试图推出自己应用程序的一个组件。请注意,答案建议修改意图过滤器:他们无法很好地修改YouTube或其浏览器的意图过滤器。您找到解决方案了吗?这是否回答了您的问题@Tomerikoo这似乎是另一种情况,他们正试图推出自己应用程序的一个组件。请注意,答案建议修改意图过滤器:他们无法很好地修改YouTube或其浏览器的意图过滤器。