第一件事,对不起我的英语不好。

我获得了可以启动此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。
感谢你的帮助!

10-08 08:45
查看更多