1
1
package com.reactnativewebbrowser.utilities
2
2
3
+ import android.content.Context
4
+ import android.content.Intent
5
+ import android.content.pm.PackageManager
6
+ import android.net.Uri
7
+ import androidx.browser.customtabs.CustomTabsService
3
8
import com.facebook.react.bridge.Arguments
4
9
import com.facebook.react.bridge.WritableMap
5
10
@@ -21,3 +26,34 @@ fun WritableMap.putStringArrayList(name: String, strArr: ArrayList<String>) {
21
26
}
22
27
this .putArray(name, arr)
23
28
}
29
+
30
+ val ALLOWED_CUSTOM_TABS_PACKAGES =
31
+ arrayOf(
32
+ " com.android.chrome" , // Chrome stable
33
+ " com.google.android.apps.chrome" , // Chrome system
34
+ " com.chrome.beta" ,// Chrome beta
35
+ " com.chrome.dev" // Chrome dev
36
+ )
37
+
38
+ fun Context.getDefaultBrowser (): String? {
39
+ val intent = Intent (Intent .ACTION_VIEW , Uri .parse(" https://web3auth.io" ))
40
+ val resolveInfo = packageManager.resolveActivity(intent, PackageManager .MATCH_DEFAULT_ONLY )
41
+ ? : return null
42
+ val activityInfo = resolveInfo.activityInfo ? : return null
43
+ return activityInfo.packageName
44
+ }
45
+
46
+ fun Context.getCustomTabsBrowsers (): List <String > {
47
+ val customTabsBrowsers: MutableList <String > = java.util.ArrayList ()
48
+ for (browser in ALLOWED_CUSTOM_TABS_PACKAGES ) {
49
+ val customTabsIntent = Intent ()
50
+ customTabsIntent.action = CustomTabsService .ACTION_CUSTOM_TABS_CONNECTION
51
+ customTabsIntent.setPackage(browser)
52
+
53
+ // Check if this package also resolves the Custom Tabs service.
54
+ if (packageManager.resolveService(customTabsIntent, 0 ) != null ) {
55
+ customTabsBrowsers.add(browser)
56
+ }
57
+ }
58
+ return customTabsBrowsers
59
+ }
0 commit comments