热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新发的日常小实验——使用AndroidStudio自制一个WebView浏览器

文章目录一、前言二、具体操作1、创建工程2、创建layout3、添加WebView控件4、创建webview界面的JavaClass5、webview逻辑代码6、从MainActi

文章目录

      • 一、前言
      • 二、具体操作
        • 1、创建工程
        • 2、创建layout
        • 3、添加WebView控件
        • 4、创建webview界面的Java Class
        • 5、webview逻辑代码
        • 6、从MainActivity启动MyWebViewActivity
        • 7、配置AndroidManifest.xml
      • 三、运行测试


一、前言

做个小实验,使用AndroidStudio制作一个简单的WebView浏览器。
最终效果

在这里插入图片描述

二、具体操作


1、创建工程

点击菜单Fiew > New > New Module...
在这里插入图片描述
选择Phone & Tablet Module
在这里插入图片描述
名字叫WebViewDemo
在这里插入图片描述
选择Empty Activity
在这里插入图片描述
ActivityMainActivity
在这里插入图片描述
创建成功
在这里插入图片描述

2、创建layout

layout文件夹鼠标右键,点击New > Layout resource file
在这里插入图片描述
取名为activity_webview,点击OK
在这里插入图片描述

3、添加WebView控件

拖动WebView控件到界面中
在这里插入图片描述
编辑idmywebview
在这里插入图片描述

4、创建webview界面的Java Class

在包文件上鼠标右键,New > Java Class
在这里插入图片描述
类名叫MyWebViewActivity,父类为AppCompatActivity
在这里插入图片描述
重写onCreate函数,指明布局文件为上面创建的activity_webview
在这里插入图片描述

5、webview逻辑代码

核心就是loadUrl接口,具体代码如下:

package com.example.webviewdemo;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;import androidx.appcompat.app.AppCompatActivity;public class MyWebViewActivity extends AppCompatActivity {private WebView webView ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_webview);//初始化浏览器initWebView();//获取url,这个参数从MainActivity传过来的Intent intent = getIntent();String url = intent.getStringExtra("url");//访问urlLoadUrl(url);}//初始化浏览器private void initWebView() {webView = (WebView) findViewById(R.id.mywebview);WebSettings webSettings = webView.getSettings();webView.setVerticalScrollBarEnabled(false);//设置缓存webSettings.setSaveFormData(false);webSettings.setSavePassword(false);//设置JS支持//webSettings.setJavascriptEnabled(true);//设置支持缩放变焦webSettings.setBuiltInZoomControls(false);//设置是否支持缩放webSettings.setSupportZoom(false);//设置是否允许JS打开新窗口webSettings.setJavascriptCanOpenWindowsAutomatically(true);// 修复一些机型webview无法点击webView.requestFocus(View.FOCUS_DOWN);webView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubswitch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_UP:if (!v.hasFocus()) {v.requestFocus();}break;}return false;}});webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if(url.startsWith("http:") || url.startsWith("https:") ) {view.loadUrl(url);return false;}else{Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;}}});}//访问urlprivate void LoadUrl(String url){webView.loadUrl(url);}
}

6、从MainActivity启动MyWebViewActivity

MainActivity界面中加个按钮,点击的时候启动MyWebViewActivity
在这里插入图片描述

package com.example.webviewdemo;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn = (Button)findViewById(R.id.button);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//url参数通过Intent 传递过去String url = "http://www.baidu.com";Intent intent=new Intent(MainActivity.this,MyWebViewActivity.class);intent.putExtra("url", url);//启动MyWebViewActivitystartActivity(intent);}});}
}

7、配置AndroidManifest.xml

添加INTERNET权限

<uses-permission android:name&#61;"android.permission.INTERNET">uses-permission>

application节点中添加&#xff0c;支持https

android:usesCleartextTraffic&#61;"true"

完整的AndroidManifest.xml如下


<manifest xmlns:android&#61;"http://schemas.android.com/apk/res/android"package&#61;"com.example.webviewdemo"><uses-permission android:name&#61;"android.permission.INTERNET">uses-permission><applicationandroid:allowBackup&#61;"true"android:icon&#61;"&#64;mipmap/ic_launcher"android:label&#61;"&#64;string/app_name"android:roundIcon&#61;"&#64;mipmap/ic_launcher_round"android:supportsRtl&#61;"true"android:usesCleartextTraffic&#61;"true"android:theme&#61;"&#64;style/AppTheme"><activity android:name&#61;".MainActivity"><intent-filter><action android:name&#61;"android.intent.action.MAIN" /><category android:name&#61;"android.intent.category.LAUNCHER" />intent-filter>activity><activity android:name&#61;".MyWebViewActivity">activity>application>
manifest>

三、运行测试

在这里插入图片描述


推荐阅读
  • Android Studio中的IBM MobileFirst Compile问题 - IBM MobileFirst Compile in Android Studio Issue
    IbuiltaMultipageapplicationbyusingIBMMobileFirst,accordingto据我所知,我使用IBMMobileFirst构建了一个 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在使用Visual Studio 2019评估Blazor时,将taghelper添加到剃刀文件时会出现错误。错误信息是"标记助手:@addTagHelper *,BlazorPOC.Validations"。需要在文件顶部添加@using语句"@using BlazorPOC.Validations"来解决这个问题。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
互相体谅知足常乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有