[
https://issues.apache.org/jira/browse/CB-10795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16622686#comment-16622686
]
ASF subversion and git services commented on CB-10795:
------------------------------------------------------
Commit a0783378fc901a84294dc66908a91f78014d3fb6 in
cordova-plugin-inappbrowser's branch refs/heads/master from [~dpolivy]
[
https://gitbox.apache.org/repos/asf?p=cordova-plugin-inappbrowser.git;h=a078337
]
[CB-10795] Exclude current app from external intent list (#154)
On Android, if the app defines an intent-filter for a given URL, and
then tries to use inappbrowser to launch that URL via the _system
target, the default handler for that intent is the app itself.
That behavior can lead to circular loops, and ultimately is not what the
developer wants -- the link should be launched in a browser.
Because there is no easy way to find the "default" system browser on a
device, this solution will do two things:
1) Check if the app is one of the targets for this intent
2) If so, create a custom chooser with all other targets, excluding the
current app.
If the app is not a target, then the current (existing) behavior is
preserved.
The only real "downside" to this approach is that a default handler can no
longer be set for these URLs within the app, and a chooser will be shown each
time the user taps a link that opens in a new browser.
Fixes https://issues.apache.org/jira/browse/CB-10795
> [InAppBrowser] Circular loop if app had an intent-filter defined for the URL
> being opened
> -----------------------------------------------------------------------------------------
>
> Key: CB-10795
> URL: https://issues.apache.org/jira/browse/CB-10795
> Project: Apache Cordova
> Issue Type: Bug
> Components: cordova-plugin-inappbrowser
> Reporter: Dan Polivy
> Priority: Minor
> Labels: Android, triaged
>
> Consider the following scenario:
> 1. App "X" has an intent-filter defined that says it can open URLs for
> "www.example.com". (e.g., using
> https://github.com/EddyVerbruggen/Custom-URL-scheme plugin)
> 2. App "X" wants to launch a specific URL on www.example.com in the system
> browser.
> 3. App "X" uses InAppBrowser plugin and calls {{window.open}} with
> {{_system}} as the target.
> Actual:
> Since the app itself has an intent-filter defined for "www.example.com",
> InAppBrowser will just re-launch the app with the intent. In some cases, if a
> default handler is not chosen, one will get a chooser, however the app will
> still be listed as the default option.
> Expected:
> The app should be able to launch the URL in the system browser to avoid a
> circular redirect.
> There is some discussion of this issue on stackoverflow:
> http://stackoverflow.com/questions/18682833/how-to-exclude-a-specific-application-from-action-view-intent
> http://stackoverflow.com/questions/29529027/open-url-in-browser-even-though-my-app-registered-an-intent-filter-for-it
> I think it might be reasonable for InAppBrowser, in {{openExternal}}, to
> explicitly remove the current app from the list.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]