Normalize scheme for URL on Android (#21561)

Summary:
Android requires lowercase for URL scheme. This commit https://github.com/facebook/react-native/commit/d00bdb9bb8b9b11bce900689c7e28cebd2eb0807 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-12 11:38:44 +01:00
committed by Lorenzo Sciandra
parent 09178f8bb9
commit b1aed4d376
2 changed files with 1 additions and 8 deletions
-7
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);
}
@@ -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(