Răsfoiți Sursa

webview fixes

Milan Jurkulak 3 ani în urmă
părinte
comite
c6fd396465

+ 14 - 3
app/src/main/AndroidManifest.xml

@@ -19,12 +19,14 @@
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
 
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
+    <uses-permission
+        android:name="android.permission.READ_EXTERNAL_STORAGE"
         tools:ignore="ScopedStorage" />
     <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
     <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
     <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
-    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
+    <uses-permission
+        android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
         tools:ignore="ScopedStorage" />
 
     <uses-permission
@@ -49,9 +51,9 @@
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:largeHeap="true"
+        android:requestLegacyExternalStorage="true"
         android:supportsRtl="true"
         android:theme="@style/Theme.TvApp"
-        android:requestLegacyExternalStorage="true"
         android:usesCleartextTraffic="true"
         tools:ignore="UnusedAttribute">
 
@@ -121,6 +123,15 @@
                 <data android:scheme="https" />
             </intent-filter>
 
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:scheme="demo" />
+            </intent-filter>
+
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
 

+ 13 - 9
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/web/WebView.kt

@@ -17,7 +17,9 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.viewinterop.AndroidView
 import org.mjdev.tvlib.annotations.TvPreview
+import org.mjdev.tvlib.extensions.ComposeExt.isEditMode
 
+@Suppress("LocalVariableName")
 @SuppressLint("SetJavaScriptEnabled")
 @TvPreview
 @Composable
@@ -26,22 +28,24 @@ fun WebView(
     url: String = "about:blank",
     enableJavaScript: Boolean = true
 ) {
+    val USER_AGENT =
+        "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"
+    val isEdit = isEditMode()
     AndroidView(
         modifier = modifier,
         factory = { context ->
             WebView(context).apply {
                 background = ColorDrawable(0)
-                settings.userAgentString =
-                    "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012)" +
-                            " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 " +
-                            "Mobile Safari/537.36"
-                webChromeClient = WebChromeClient().apply {
-                    with(settings) {
-                        javaScriptEnabled = enableJavaScript
-                        allowContentAccess = true
+                if (!isEdit) {
+                    webChromeClient = WebChromeClient().apply {
+                        with(settings) {
+                            javaScriptEnabled = enableJavaScript
+                            allowContentAccess = true
+                            userAgentString = USER_AGENT
+                        }
                     }
+                    webViewClient = WebViewClient()
                 }
-                webViewClient = WebViewClient()
                 loadUrl(url)
             }
         }