HapeLee 1 год назад
Родитель
Сommit
4406f805af

+ 2 - 0
app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt

@@ -142,6 +142,7 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
             RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin
             RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_cross_origin
             RedirectPolicy.BLOCK_ALL -> R.id.menu_redirect_block_all
+            RedirectPolicy.ASK_SAME_DOMAIN_BLOCK_CROSS -> R.id.menu_redirect_ask_same_domain_block_cross
         }
         menu.findItem(menuItemId)?.isChecked = true
     }
@@ -153,6 +154,7 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
             R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN
             R.id.menu_redirect_block_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN
             R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL
+            R.id.menu_redirect_ask_same_domain_block_cross -> RedirectPolicy.ASK_SAME_DOMAIN_BLOCK_CROSS
             else -> RedirectPolicy.ALLOW_ALL
         }
 

+ 17 - 2
app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt

@@ -81,7 +81,8 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
         ASK_ALWAYS,
         ASK_CROSS_ORIGIN,
         BLOCK_CROSS_ORIGIN,
-        BLOCK_ALL;
+        BLOCK_ALL,
+        ASK_SAME_DOMAIN_BLOCK_CROSS;
 
         companion object {
             fun fromString(value: String?): RedirectPolicy {
@@ -247,6 +248,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
             RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin
             RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_cross_origin
             RedirectPolicy.BLOCK_ALL -> R.id.menu_redirect_block_all
+            RedirectPolicy.ASK_SAME_DOMAIN_BLOCK_CROSS -> R.id.menu_redirect_ask_same_domain_block_cross
         }
         menu.findItem(menuItemId)?.isChecked = true
     }
@@ -258,6 +260,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
             R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN
             R.id.menu_redirect_block_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN
             R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL
+            R.id.menu_redirect_ask_same_domain_block_cross -> RedirectPolicy.ASK_SAME_DOMAIN_BLOCK_CROSS
             else -> RedirectPolicy.ALLOW_ALL
         }
 
@@ -489,7 +492,10 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
 
             return when (redirectPolicy) {
                 RedirectPolicy.ALLOW_ALL -> false
-                RedirectPolicy.BLOCK_ALL -> true
+                RedirectPolicy.BLOCK_ALL -> {
+                    toastOnUi("已阻止重定向")
+                    true
+                }
                 RedirectPolicy.ASK_ALWAYS -> {
                     askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) }
                     true
@@ -510,6 +516,15 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
                         false
                     }
                 }
+                RedirectPolicy.ASK_SAME_DOMAIN_BLOCK_CROSS -> {
+                    if (crossOrigin) {
+                        toastOnUi("已阻止域外跳转")
+                        true
+                    } else {
+                        askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) }
+                        true
+                    }
+                }
             }
         }
 

+ 3 - 1
app/src/main/res/layout/item_rss_article_3.xml

@@ -25,9 +25,11 @@
                 android:id="@+id/image_view"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:minHeight="80dp"
+                android:backgroundTint="?attr/colorSurfaceContainer"
                 android:contentDescription="@string/loading"
                 android:visibility="visible"
-                android:scaleType="centerCrop" />
+                 />
         </com.google.android.material.card.MaterialCardView>
 
         <TextView

+ 3 - 0
app/src/main/res/menu/menu_redirect_policy_submenu.xml

@@ -10,6 +10,9 @@
         <item
             android:id="@+id/menu_redirect_ask_cross_origin"
             android:title="@string/redirect_ask_cross_origin" />
+        <item
+            android:id="@+id/menu_redirect_ask_same_domain_block_cross"
+            android:title="@string/redirect_ask_same_domain_block_cross" />
         <item
             android:id="@+id/menu_redirect_block_cross_origin"
             android:title="@string/redirect_block_cross_origin" />

+ 3 - 2
app/src/main/res/values-zh/strings.xml

@@ -1316,7 +1316,8 @@
     <string name="redirect_policy">网页重定向策略</string>
     <string name="redirect_allow_all">允许所有重定向</string>
     <string name="redirect_ask_always">总是询问</string>
-    <string name="redirect_ask_cross_origin">跨域时询问</string>
-    <string name="redirect_block_cross_origin">阻止跨域重定向</string>
+    <string name="redirect_ask_cross_origin">域名不同时询问</string>
+    <string name="redirect_block_cross_origin">阻止跨域名重定向</string>
     <string name="redirect_block_all">阻止所有重定向</string>
+    <string name="redirect_ask_same_domain_block_cross">域内询问且域外阻止</string>
 </resources>

+ 3 - 2
app/src/main/res/values/strings.xml

@@ -1317,7 +1317,8 @@
     <string name="redirect_policy">网页重定向策略</string>
     <string name="redirect_allow_all">允许所有重定向</string>
     <string name="redirect_ask_always">总是询问</string>
-    <string name="redirect_ask_cross_origin">跨域时询问</string>
-    <string name="redirect_block_cross_origin">阻止跨域重定向</string>
+    <string name="redirect_ask_cross_origin">域名不同时询问</string>
+    <string name="redirect_block_cross_origin">阻止跨域名重定向</string>
     <string name="redirect_block_all">阻止所有重定向</string>
+    <string name="redirect_ask_same_domain_block_cross">域内询问且域外阻止</string>
 </resources>