Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我该如何绕过这个“问题”;使用…“完成操作”;?_Android_Android Intent_Action - Fatal编程技术网

Android 我该如何绕过这个“问题”;使用…“完成操作”;?

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

我有一个关于在Android中显示“Complete Action Using”对话框时以编程方式选择应用程序的问题

例如: 在我的代码中,我有以下声明:

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或其浏览器的意图过滤器。