Skip to content

Instantly share code, notes, and snippets.

@wheeliechamp
Created October 9, 2021 15:45
Show Gist options
  • Save wheeliechamp/2c088d66bb3626971c19a2ae16f92156 to your computer and use it in GitHub Desktop.
Save wheeliechamp/2c088d66bb3626971c19a2ae16f92156 to your computer and use it in GitHub Desktop.
Webページのソースコードを取得
package com.example.webscrapingtest.view
import androidx.lifecycle.ViewModelProvider
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.JavascriptInterface
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.databinding.DataBindingUtil
import com.example.webscrapingtest.R
import com.example.webscrapingtest.databinding.MainFragmentBinding
import com.example.webscrapingtest.viewmodel.MainViewModel
import kotlinx.android.synthetic.main.main_fragment.view.*
class MainFragment : Fragment() {
private lateinit var webViewModel: MainViewModel
private lateinit var binding: MainFragmentBinding
companion object {
fun newInstance() = MainFragment()
}
private lateinit var viewModel: MainViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(inflater, R.layout.main_fragment, container, false)
binding.setLifecycleOwner(this)
val view = binding.root
view.webView.settings.javaScriptEnabled = true
// 規定のブラウザではなく、WebViewで表示するためコード
view.webView.webViewClient = object : ViewSourceClient(){}
view.webView.addJavascriptInterface(this, "fragment")
view.webView.loadUrl("https://yahoo.co.jp/")
return binding.getRoot()
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
// TODO: Use the ViewModel
}
open class ViewSourceClient : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
view.loadUrl("javascript:window.fragment.viewSource(document.getElementsByTagName('html')[0].outerHTML);")
}
}
@JavascriptInterface
fun viewSource(src: String) {
Log.d("Test", src)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment