Просмотр исходного кода

Allow choosing browser apps from WebView even when extension deep links are verified in Android 12+

arkon 3 лет назад
Родитель
Сommit
adab8e3ed8

+ 10 - 0
app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt

@@ -292,12 +292,22 @@ fun Context.openInBrowser(uri: Uri, @ColorInt toolbarColor: Int? = null) {
                     .build()
             )
             .build()
+        // Force allowing browser selection for Android 12+ so that verified extensions don't
+        // re-open Tachiyomi
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+            intent.intent.setPackage(defaultBrowserPackageName())
+        }
         intent.launchUrl(this, uri)
     } catch (e: Exception) {
         toast(e.message)
     }
 }
 
+fun Context.defaultBrowserPackageName(): String? {
+    val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse("http://"))
+    return packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY)?.activityInfo?.packageName
+}
+
 fun Context.createFileInCacheDir(name: String): File {
     val file = File(externalCacheDir, name)
     if (file.exists()) {