| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2,14 +2,12 @@ package io.legado.app.ui.rss.read | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.annotation.SuppressLint | 
					 | 
					 | 
					 | 
					import android.annotation.SuppressLint | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.content.Intent | 
					 | 
					 | 
					 | 
					import android.content.Intent | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import android.content.pm.ActivityInfo | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import android.content.res.Configuration | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.os.Bundle | 
					 | 
					 | 
					 | 
					import android.os.Bundle | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.KeyEvent | 
					 | 
					 | 
					 | 
					import android.view.* | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.Menu | 
					 | 
					 | 
					 | 
					import android.webkit.* | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.MenuItem | 
					 | 
					 | 
					 | 
					import androidx.core.view.size | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.webkit.WebResourceRequest | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.webkit.WebSettings | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.webkit.WebView | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.webkit.WebViewClient | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import androidx.lifecycle.Observer | 
					 | 
					 | 
					 | 
					import androidx.lifecycle.Observer | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.R | 
					 | 
					 | 
					 | 
					import io.legado.app.R | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.base.VMBaseActivity | 
					 | 
					 | 
					 | 
					import io.legado.app.base.VMBaseActivity | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -17,10 +15,7 @@ import io.legado.app.lib.theme.DrawableUtils | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.lib.theme.primaryTextColor | 
					 | 
					 | 
					 | 
					import io.legado.app.lib.theme.primaryTextColor | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.ui.filechooser.FileChooserDialog | 
					 | 
					 | 
					 | 
					import io.legado.app.ui.filechooser.FileChooserDialog | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.ui.filechooser.FilePicker | 
					 | 
					 | 
					 | 
					import io.legado.app.ui.filechooser.FilePicker | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.utils.ACache | 
					 | 
					 | 
					 | 
					import io.legado.app.utils.* | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.utils.NetworkUtils | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.utils.getViewModel | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.utils.openUrl | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import kotlinx.android.synthetic.main.activity_rss_read.* | 
					 | 
					 | 
					 | 
					import kotlinx.android.synthetic.main.activity_rss_read.* | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import kotlinx.coroutines.launch | 
					 | 
					 | 
					 | 
					import kotlinx.coroutines.launch | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.commons.text.StringEscapeUtils | 
					 | 
					 | 
					 | 
					import org.apache.commons.text.StringEscapeUtils | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -40,7 +35,8 @@ class ReadRssActivity : VMBaseActivity<ReadRssViewModel>(R.layout.activity_rss_r | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private val imagePathKey = "" | 
					 | 
					 | 
					 | 
					    private val imagePathKey = "" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var starMenuItem: MenuItem? = null | 
					 | 
					 | 
					 | 
					    private var starMenuItem: MenuItem? = null | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var ttsMenuItem: MenuItem? = null | 
					 | 
					 | 
					 | 
					    private var ttsMenuItem: MenuItem? = null | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    var webPic: String? = null | 
					 | 
					 | 
					 | 
					    private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    private var webPic: String? = null | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override fun onActivityCreated(savedInstanceState: Bundle?) { | 
					 | 
					 | 
					 | 
					    override fun onActivityCreated(savedInstanceState: Bundle?) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        viewModel.callBack = this | 
					 | 
					 | 
					 | 
					        viewModel.callBack = this | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -50,6 +46,20 @@ class ReadRssActivity : VMBaseActivity<ReadRssViewModel>(R.layout.activity_rss_r | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        viewModel.initData(intent) | 
					 | 
					 | 
					 | 
					        viewModel.initData(intent) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    override fun onConfigurationChanged(newConfig: Configuration) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        super.onConfigurationChanged(newConfig) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        when (newConfig.orientation) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            Configuration.ORIENTATION_LANDSCAPE -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            Configuration.ORIENTATION_PORTRAIT -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { | 
					 | 
					 | 
					 | 
					    override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        menuInflater.inflate(R.menu.rss_read, menu) | 
					 | 
					 | 
					 | 
					        menuInflater.inflate(R.menu.rss_read, menu) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return super.onCompatCreateOptionsMenu(menu) | 
					 | 
					 | 
					 | 
					        return super.onCompatCreateOptionsMenu(menu) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -74,6 +84,20 @@ class ReadRssActivity : VMBaseActivity<ReadRssViewModel>(R.layout.activity_rss_r | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private fun initWebView() { | 
					 | 
					 | 
					 | 
					    private fun initWebView() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        web_view.webChromeClient = object : WebChromeClient() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            override fun onShowCustomView(view: View?, callback: CustomViewCallback?) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                ll_view.invisible() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                custom_web_view.addView(view) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                customWebViewCallback = callback | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            override fun onHideCustomView() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                custom_web_view.removeAllViews() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                ll_view.visible() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        web_view.webViewClient = object : WebViewClient() { | 
					 | 
					 | 
					 | 
					        web_view.webViewClient = object : WebViewClient() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            override fun shouldOverrideUrlLoading( | 
					 | 
					 | 
					 | 
					            override fun shouldOverrideUrlLoading( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                view: WebView?, | 
					 | 
					 | 
					 | 
					                view: WebView?, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -207,7 +231,10 @@ class ReadRssActivity : VMBaseActivity<ReadRssViewModel>(R.layout.activity_rss_r | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        event?.let { | 
					 | 
					 | 
					 | 
					        event?.let { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            when (keyCode) { | 
					 | 
					 | 
					 | 
					            when (keyCode) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                KeyEvent.KEYCODE_BACK -> if (event.isTracking && !event.isCanceled && web_view.canGoBack()) { | 
					 | 
					 | 
					 | 
					                KeyEvent.KEYCODE_BACK -> if (event.isTracking && !event.isCanceled && web_view.canGoBack()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (web_view.copyBackForwardList().size > 1) { | 
					 | 
					 | 
					 | 
					                    if (custom_web_view.size > 0) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        customWebViewCallback?.onCustomViewHidden() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        return true | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } else if (web_view.copyBackForwardList().size > 1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        web_view.goBack() | 
					 | 
					 | 
					 | 
					                        web_view.goBack() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        return true | 
					 | 
					 | 
					 | 
					                        return true | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |