文章目次
零、学习目标
- 掌握通过意图欣赏网页
- 掌握通过WebView欣赏网页
- 掌握如何实现网页与安卓通信
一、Intent十二种常用功能
1、欣赏网页
- Uri uri = Uri.parse("http://www.lzy.edu.cn"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);
复制代码 2、欣赏舆图
- Uri uri = Uri.parse("geo:68.500511,-66.0068787"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
复制代码 3、调出拨打电话界面
- Uri uri = Uri.parse("tel:1008");Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent);
复制代码 4、直接拨打电话
- Uri uri = Uri.parse("tel:1008");Intent intent = new Intent(Intent.ACTION_CALL, uri);startActivity(intent);
复制代码 5、卸载应用步伐
- Uri uri = Uri.fromParts("package", "net.hw.music", null);Intent intent = new Intent(Intent.ACTION_DELETE, uri);startActivity(intent);
复制代码 6、安装应用步伐
- Uri uri = Uri.fromParts("package", "net.hw.music", null);Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);startActivity(intent);
复制代码 7、播放存储卡音乐
- Uri uri = Uri.parse("file:///sdcard/music.mp3");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);
复制代码 8、调用发邮件
- Uri uri = Uri.parse("mailto:maths007@163.com");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);startActivity(intent);
复制代码 9、发邮件
- Intent intent = new Intent(Intent.ACTION_SEND);String[] tos = {"maths007@163.com"};String[] ccs = {"maths007@163.com"};intent.putExtra(Intent.EXTRA_EMAIL, tos);intent.putExtra(Intent.EXTRA_CC, ccs);intent.putExtra(Intent.EXTRA_TEXT, "body");intent.putExtra(Intent.EXTRA_SUBJECT, "subject");intent.setType("message/rfc008");Intent.createChooser(intent, "Choose Email Client");
复制代码 10、发短信
- Uri uri = Uri.parse("smsto:10000");Intent intent = new Intent(Intent.ACTION_VIEW, uri);intent.putExtra("sms_body", "Hi, are you free tonight?");intent.setType("vnd.android-dir/mms-sms");startActivity(intent);
复制代码 11、直接发短信
- Uri uri = Uri.parse("smsto://10000");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);intent.putExtra("sms_body", "Hi, are you free now?");startActivity(intent);
复制代码 12、发彩信
- Uri uri = Uri.parse("content://media/external/images/media/1");Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra("sms_body", "hi, are you ok?");intent.putExtra(Intent.EXTRA_STREAM, uri);intent.setType("image/png");startActivity(intent);
复制代码 二、案例演示 - 通过意图欣赏网页
使用Intent设置Action(Intent.ACTION_VIEW)与Data,可以实现欣赏网页的功能。
(一)运行效果
(二)实现步调
1、创建安卓应用【BrowseWebByIntent】
2、将配景图片拷贝到drawable目次
3、主布局资源文件activity_main.xml
4、字符串资源文件strings.xml
5、主界面类 - MainActivity
- package net.hw.browse_web_by_intent;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import androidx.appcompat.app.AppCompatActivity;/** * 功能:通过意图欣赏网页 * 作者:华卫 * 日期:2020年12月31日 */public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 使用布局文件设置用户界面 setContentView(R.layout.activity_main); } /** * 欣赏网页 * * @param view */ public void doBrowseWeb(View view) { // 分析网址,界说统一资源标识符 Uri uri = Uri.parse("http://www.lzy.edu.cn"); // 创建欣赏网页的意图 Intent intent = new Intent(Intent.ACTION_VIEW, uri); // 按意图启动窗口,欣赏网页 startActivity(intent); } }
复制代码 6、启动应用,查察效果
(三)讲堂训练:欣赏用户指定网址
- 在编辑框里输入网址
- 单击【前往】按钮,欣赏指定网址
三、WebView概述
WebView是安卓里一个非常重要的控件,显示和渲染网页,可与页面JavaScript交互,实现混淆开发。内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页欣赏器。使用WebView之前,不要忘记在项目清单文件中授权访问因特网。
四、案例演示 - 通过WebView欣赏网页
(一)运行效果
(二)实现步调
1、创建安卓应用【BrowseWebByWebView】
2、将配景图片拷贝到drawable目次
3、主布局资源文件activity_main.xml
4、字符串资源文件strings.xml
5、在项目清单文件里授权访问因特网
6、主界面类 - MainActivity

- package net.hw.browse_web_by_webview;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity { private EditText edtURL; // 网址编辑框 private Button btnGo; // 前往按钮 private WebView wvWebPage; // 网页视图 private String strURL; // 网址字符串 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 使用布局资源文件设置用户界面 setContentView(R.layout.activity_main); // 通过资源标识符获取控件实例 edtURL = findViewById(R.id.edtUrl); btnGo = findViewById(R.id.btnGo); wvWebPage = findViewById(R.id.wvWebPage); // 给按钮注册监听器,编写事件处理处罚代码 btnGo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 得到文本框里输入的网址 strURL = edtURL.getText().toString(); // 判定网址是否以"http://或https://"打头 if (checkURL(strURL)) { openBrowser(strURL); } else { Toast.makeText(MainActivity.this, "网址必须以“http://或https://”打头!", Toast.LENGTH_LONG).show(); } } }); // 给文本框注册监听器,编写事件处理处罚代码 edtURL.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { // 得到文本框里输入的网址 strURL = edtURL.getText().toString(); // 判定网址是否以"http://或https://"打头 if (checkURL(strURL)) { openBrowser(strURL); return true; // 事件处理处罚完毕,不再往后流传 } else { Toast.makeText(MainActivity.this, "网址必须以“http://或https://”打头!", Toast.LENGTH_LONG).show(); } } return false; } }); } /** * 让欣赏器引擎加载网址,显示网页 */ protected void openBrowser(String strUrl) { // 设置JavaScript可用 wvWebPage.getSettings().setJavaScriptEnabled(true); // 创建并设置web客户端 wvWebPage.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; // 返回true在webview里显示网页,否则调用安卓自带欣赏器或第三方欣赏器显示网页 } }); // 加载网址,显示网页内容 wvWebPage.loadUrl(strURL); } /** * 功能:查抄网址是否以“http://或https://”打头 * * @param url 网址 * @return 正当网址返回真,否则返回假 */ private boolean checkURL(String url) { if (url.length() > 7) { if (url.substring(0, 7).equalsIgnoreCase("http://")) { return true; } } else if (url.length() > 8) { if (url.substring(0, 8).equalsIgnoreCase("https://")) { return true; } } return false; }}
复制代码 7、启动应用,查察效果
五、案例演示 - 网页与安卓通信
(一)运行效果
(二)实现步调
1、创建安卓应用【WebCommunicatesWithAnroid】
2、主布局资源文件activity_main.xml
3、字符串资源文件strings.xml
4、在assets目次里创建网页文件 - test.html
- [size=6]网页视图(WebView)[/size]
- [url=https://www.jianchenwangluo.com/#]显示JavaScript告诫框[/url]
- [url=https://www.jianchenwangluo.com/#]在网页里调用安卓[/url]
- [color=#ff00ff][size=20px][/size][/color]
复制代码 5、在项目清单文件里授权访问因特网
6、主界面类 - MainActivity

- package net.hw.web_android;import android.app.AlertDialog;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.JsResult;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.widget.Button;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;/** * 功能:网页与安卓通信 * 作者:华卫 * 日期:2021年01月01日 */public class MainActivity extends AppCompatActivity { /** * 网页视图 */ private WebView wvWebPage; /** * 按钮:在安卓里调用JavaScript */ private Button btnCallJavaScriptFromAndroid; /** * 标签:显示来自网页的消息 */ private TextView tvMessageFromWebPage; /** * 消息处理处罚器,用于欣赏器线程与主线程之间的转换 */ private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 使用布局资源文件设置用户界面 setContentView(R.layout.activity_main); // 通过资源标识符获取控件实例 wvWebPage = findViewById(R.id.wvWebPage); btnCallJavaScriptFromAndroid = findViewById(R.id.btnCallJavaScriptFromAndroid); tvMessageFromWebPage = findViewById(R.id.tvMessageFromWebPage); // 实例化消息处理处罚器 handler = new Handler(); // 设置JavaScript可用 wvWebPage.getSettings().setJavaScriptEnabled(true); // 使用wvWebPage加载当地页面 wvWebPage.loadUrl("file:///android_asset/test.html"); // 设置网页欣赏器客户端,能监听到网页弹出告诫框 wvWebPage.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { /* 创建一个安卓告诫对话框 */ // 创建告诫对话框生成器 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // 设置对话框标题 builder.setTitle("提示"); // 设置对话框图标 builder.setIcon(R.mipmap.ic_launcher); // 设置对话框正文 builder.setMessage(message); // 设置确定按钮 builder.setPositiveButton("确定", null); // 根据设置创建告诫对话框 AlertDialog dialog = builder.create(); // 显示告诫对话框 dialog.show(); // 处理处罚用户确认操纵 result.confirm(); // 事件处理处罚完毕 return true; } }); // 给按钮注册监听器,编写事件处理处罚代码 btnCallJavaScriptFromAndroid.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 使用wvWebPage调用JavaScript函数 wvWebPage.loadUrl("javascript:callJS('来自安卓的信息:你好!')"); } }); /* * 沟通网页与安卓的桥梁类,实例化后可供JavaScript调用。 * 当JavaScript调用AndroidBridge对象的callAndroid方法时, * 安卓就会创建一个Runnable对象,而且把它放到handler的运行队列中, * 这样主线程一有时机就会调用run()方法,修改标签内容。 */ class AndroidBridge { @JavascriptInterface public void callAndroid(final String arg) { handler.post(new Runnable() { @Override public void run() { tvMessageFromWebPage.setText(arg); // 设置标签内容 } }); } } // 实例化AndroidBridge,名为android供JavaScript调用。 wvWebPage.addJavascriptInterface(new AndroidBridge(), "android"); }}
复制代码 7、启动应用,查察效果
(三)讲堂训练 - 实现表达式盘算器
来源:https://blog.csdn.net/howard2005/article/details/112048952
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |