admin管理员组文章数量:1545256
初衷:
虽然现在市场上浏览器很多,比如chrome,夸克,没有广告,新闻等乱七八糟的东西,页面简单清晰,但是自己的浏览记录还是存放在别人的服务器,就算删除了,开隐身模式了,但是具体后台的操作谁又知道呢,鉴于此自己做一个浏览器,实现最基本的搜索,地址加载,响应下载等,实现最基本的功能,没有广告,没有启动页,没有新闻资讯,没有推送,没有后台记录,没有进程保活等烦人的东西。
开始
1. 首先准备一个空白的Android项目(我此处语言采用Kotlin)。
O(∩_∩)O哈哈~
2. 写布局
非常简单,哈哈
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android/apk/res/android"
xmlns:app="http://schemas.android/apk/res-auto"
xmlns:tools="http://schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="35dp"
android:lines="1"
android:singleLine="true"
android:inputType="textUri"
android:imeOptions="actionSend"
android:textSize="12sp"
tools:text="asdasdasdas"
android:textColor="#333333"
android:paddingStart="10dp"
android:paddingEnd="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@drawable/url_bac"/>
<ProgressBar
android:id="@+id/progressBar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
android:progress="50"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/progressBar" />
</androidx.constraintlayout.widget.ConstraintLayout>
3. 初始化Webview的一些设置
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
initListener()
loadDefaultUrl()
}
private fun initView() {
webView = findViewById(R.id.webView)
editText = findViewById(R.id.editText)
progressBar = findViewById(R.id.progressBar)
val settings = webView.settings
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true//js和android交互
settings.allowFileAccess = true // 允许访问文件
settings.setAppCacheEnabled(true) //设置H5的缓存打开,默认关闭
settings.useWideViewPort = true//设置webview自适应屏幕大小
settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS//设置,可能的话使所有列的宽度不超过屏幕宽度
settings.loadWithOverviewMode = true//设置webview自适应屏幕大小
settings.domStorageEnabled = true//设置可以使用localStorage
settings.setSupportZoom(false)//关闭zoom按钮
settings.builtInZoomControls = false//关闭zoom
}
private fun loadDefaultUrl() {
//访问网页
webView.loadUrl("http://www.baidu")
}
4. 监听返回键,当webview可以后退的时候,不结束应用
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if(event?.keyCode == KeyEvent.KEYCODE_BACK){
if(webView.canGoBack()) {
webView.goBack()
return true;
}
}
return super.onKeyDown(keyCode, event)
}
5. 监听输入框,加载输入的地址
editText.setOnEditorActionListener { p0, p1, p2 ->
if(p2?.keyCode == KeyEvent.KEYCODE_ENTER){
var url = editText.text.toString()
if(!url.startsWith("http")&&!url.startsWith("https")){
url="http://$url"
}
webView.loadUrl(url)
ImTool.closeKeyBoard(baseContext,editText)
}
false
}
6.设置webviewclient,并且监听页面加载进度,当页面加载结束的时候,设置url到输入框
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if(newProgress >= 99){
progressBar.visibility = View.GONE
}else if(progressBar.visibility == View.GONE){
progressBar.visibility = View.VISIBLE
}
progressBar.progress = newProgress
}
}
webView.webViewClient = object:WebViewClient(){
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
editText.setText(url)
}
}
7.响应页面的下载
webView.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
val i = Intent(Intent.ACTION_VIEW)
i.data = Uri.parse(url)
startActivity(i)
}
8. 运行一下试试:
至此,基本的功能就有了,再也不用担心浏览器泄漏你的浏览记录了,但是也还是防不了百度和其他网站有可能会泄漏你的浏览记录,毕竟这还得靠这些网站自觉了。
最后带上源码链接:
https://github/MaXiaopingIT/MinewebBrowser
版权声明:本文标题:Android 开发基于Webview 自制一个简单的手机浏览器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727157494a1099641.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论