即使我的应用程序为其注册了intent-filter,也可以在浏览器中打开URL

And*_*eKR 4 android intentfilter android-intent

我的应用程序为某些URL注册了一个intent过滤器,因为它可以处理来自这些URL的数据.

但是,在应用程序内部,我想提供一个按钮,在浏览器中打开这样的URL.也就是说,如果设置了一个,则在默认浏览器中打开它,否则提供一个选择器 - 就像正常一样.

现在,当我的应用程序被设置为这些URL的默认设置时,我按下按钮,我自然会在我的应用程序中一次又一次地获得相同的活动.

有任何想法吗?

And*_*eKR 9

我最终做的是:

Intent i = new Intent(Intent.ACTION_VIEW,
        Uri.parse("https://website.com/entries/" + entry_id));

// Check what is the default app to handle these entry URLs

ResolveInfo defaultResolution = getPackageManager().resolveActivity(i,
        PackageManager.MATCH_DEFAULT_ONLY);

// If this app is the default app for entry URLs, use the browser instead

if (defaultResolution.activityInfo.packageName.equals(getPackageName())) {

    Intent browseIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://"));

    ResolveInfo browseResolution = getPackageManager().resolveActivity(browseIntent,
            PackageManager.MATCH_DEFAULT_ONLY);

    i.setComponent(new ComponentName(
            browseResolution.activityInfo.applicationInfo.packageName,
            browseResolution.activityInfo.name));

}

startActivity(i);
Run Code Online (Sandbox Code Playgroud)