Reputation: 147
I have tried everything but still no luck. My webview always shows a blank screen. My main motive is to load pdf files from the server.
activity_web_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.WebViewActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
WebViewActivity.kt
class WebViewActivity : AppCompatActivity() {
private val url: String = "https://www.google.co.in/"
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
setContentView(R.layout.activity_web_view)
initWebView()
setWebClient()
loadUrl(url)
}
@SuppressLint("SetJavaScriptEnabled")
private fun initWebView() {
webView.settings.javaScriptEnabled = true
webView.settings.loadWithOverviewMode = true
webView.settings.useWideViewPort = true
webView.settings.domStorageEnabled = true
webView.webViewClient = object : WebViewClient() {
override
fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
handler?.proceed()
}
}
}
private fun setWebClient() {
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(
view: WebView,
newProgress: Int
) {
super.onProgressChanged(view, newProgress)
}
}
}
private fun loadUrl(pageUrl: String) {
webView.loadUrl(pageUrl)
}
}
Invocation from Main Activity
val intent = Intent(this, WebViewActivity::class.java)
startActivity(intent)
I don't know what I am doing wrong. Help is much appreciated.
Thanks in advance.
Upvotes: 0
Views: 948
Reputation: 3
This fragment webview show blank page in kotlin:
override fun setupView() {
//val mWebView: WebView? = view?.findViewById(R.id.webviewdaum) as WebView
//mWebView?.loadUrl("https://www.greenhcm.com/")
//val webSettings = mWebView?.getSettings()
//webSettings?.setJavaScriptEnabled(true)
// Force links and redirects to open in the WebView instead of in a browser
//mWebView?.setWebViewClient(WebViewClient())
//var mywebview: WebView? = null
val mywebview: WebView = view?.findViewById(R.id.webviewdaum) as WebView
mywebview!!.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
mywebview!!.loadUrl("https://www.google.com/")
// Enable Javascript
val webSettings: WebSettings = mywebview.getSettings()
webSettings.javaScriptEnabled = true
mywebview.settings.loadWithOverviewMode = true
mywebview.settings.useWideViewPort = true
mywebview.settings.domStorageEnabled = true
// Force links and redirects to open in the WebView instead of in a browser
// Force links and redirects to open in the WebView instead of in a browser
mywebview.setWebViewClient(WebViewClient())
}
The error message is
2020-10-27 12:33:38.773 11545-11545/com.greenhcm.android D/EgretLoader: EgretLoader(Context context) 2020-10-27 12:33:38.774 11545-11545/com.greenhcm.android D/EgretLoader: The context is not activity
Upvotes: 0
Reputation: 2972
Use:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view)
println("in webview")//--> add this to confirm this is actually called
initWebView()
setWebClient()
loadUrl(url)
}
Not the one you used. The other one is for persistable reboots, and will not be called under normal circumstances, and you would need to mark the activity as such in your manifest:
https://developer.android.com/reference/android/R.attr.html#persistableMode
Upvotes: 1