Normalize scheme for URL on Android (#21561)

Summary:
Android requires lowercase for URL scheme. This commit d00bdb9bb8 fixed it but on React Native side.
Because it is Android specific, it should be fixed on Android side.

Android has method to normalize url scheme: https://developer.android.com/reference/android/net/Uri.html#normalizeScheme()
Pull Request resolved: https://github.com/facebook/react-native/pull/21561

Differential Revision: D10287868

Pulled By: hramos

fbshipit-source-id: f5e474164fdb2cfd49bd8ee51da17de3f1341a9c
This commit is contained in:
Radovan Šmitala 2018-10-09 23:22:22 -07:00 committed by Facebook Github Bot
parent 9965ea5a2e
commit 4b6f02ea75
2 changed files with 1 additions and 8 deletions

View File

@ -57,13 +57,6 @@ class Linking extends NativeEventEmitter {
* See https://facebook.github.io/react-native/docs/linking.html#openurl
*/
openURL(url: string): Promise<any> {
// Android Intent requires protocols http and https to be in lowercase.
// https:// and http:// works, but Https:// and Http:// doesn't.
if (url.toLowerCase().startsWith('https://')) {
url = url.replace(url.substr(0, 8), 'https://');
} else if (url.toLowerCase().startsWith('http://')) {
url = url.replace(url.substr(0, 7), 'http://');
}
this._validateURL(url);
return LinkingManager.openURL(url);
}

View File

@ -79,7 +79,7 @@ public class IntentModule extends ReactContextBaseJavaModule {
try {
Activity currentActivity = getCurrentActivity();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url).normalizeScheme());
String selfPackageName = getReactApplicationContext().getPackageName();
ComponentName componentName = intent.resolveActivity(