第一件事,对不起我的英语不好。
我获得了可以启动此Web浏览器的APP。
当应用首次执行时,它将要求用户选择是否要通过Chrome或Firefox或其他任何应用启动。而且这个APP会记住用户的选择。下次用户进入应用程序时,将打开用户选择的应用程序。
这就是问题所在,该应用程序无法在Firefox中运行,因此我必须在启动列表中删除Firefox,以防止用户在首次启动Firefox时选择它。
之前:
============================
您想用哪个启动这个应用程序?
·铬
・ Firefox
・浏览器
============================
后:
============================
您想用哪个启动这个应用程序?
·铬
・浏览器
============================
我是否可以仅在此应用程序中放置一些源代码以自定义启动列表,而不用更改智能手机中的所有启动设置?因为我不想在同一设备上影响其他APP。而且我也不想在设备中删除Firefox。
如果是这样,谁能告诉我应该编辑哪种方法?
感谢您的帮助。
最佳答案
因此,这是我通过检查以下答案来解决的方法:
How to exclude a specific application from ACTION_VIEW Intent?
Is it possible to hide some application in Intent AppChooser?
Iterating through a Collection, avoiding ConcurrentModificationException when removing in loop
之前:
private String mUri = "http://www.google.com";
Intent catchIntent = getIntent();
String uri = catchIntent.getStringExtra(Const.INTENT_TRANSITION_URL);
mUri = uri;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mUri));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
infoList = getPackageManager()
.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
后:
private String mUri = "http://www.google.com";
Intent catchIntent = getIntent();
String uri = catchIntent.getStringExtra(Const.INTENT_TRANSITION_URL);
mUri = uri;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mUri));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
infoList = getPackageManager()
.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
String excludeApplicationName = "org.mozilla.firefox";
for(Iterator<ResolveInfo> iterator = infoList.iterator(); iterator.hasNext();){
String string = iterator.next().activityInfo.packageName;
if(string.equals(excludeApplicationName)){
iterator.remove();
}
}
我只是简单地获取了所有可以打开URL的应用程序列表,并使用迭代器从列表中删除了Firefox。
感谢你的帮助!