1.首先添加权限

    <!-- 拨打电话权限 --><uses-permission android:name="android.permission.CALL_PHONE" /><!-- 发送短信权限 --><uses-permission android:name="android.permission.SEND_SMS" />

2.在解析到响应标签的类中参考下面的代码,填写到相应的方法中:

public class MainActivity extends AppCompatActivity {private TextView textView1;private TextView textView2;private TextView textView3;private TextView textView4;private TextView textView5;private TextView textView6;private String phone = "18811116666";//虚拟电话private String sendto = "这是一条短信";private String mailAdress = "goodboy@163.com";//虚拟邮箱@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//直接拨打电话textView1 = (TextView) findViewById(R.id.textview1);textView1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("android.intent.action.CALL");Uri uri = Uri.parse("tel:" + phone);intent.setData(uri);startActivity(intent);}});//跳转到拨号页面textView2 = (TextView) findViewById(R.id.textview2);textView2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("android.intent.action.DIAL");Uri uri = Uri.parse("tel:" + phone);intent.setData(uri);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}});//发送短信textView3 = (TextView) findViewById(R.id.textview3);textView3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("android.intent.action.SENDTO");Uri uri = Uri.parse("smsto:" + phone);intent.setData(uri);intent.putExtra("sms_body", sendto);startActivity(intent);}});//发送邮件textView4 = (TextView) findViewById(R.id.textview4);textView4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//mailto:goodboy@163.comUri uri = Uri.parse("mailto:"+mailAdress);Intent data=new Intent(Intent.ACTION_SENDTO);data.setData(uri);//data.putExtra(Intent.EXTRA_CC, "这是抄送人");//data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");//data.putExtra(Intent.EXTRA_TEXT, "这是内容");startActivity(Intent.createChooser(data, "请选择邮件类应用"));}});//跳转浏览器textView5 = (TextView) findViewById(R.id.textview5);textView5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse("https://blog.csdn.net/Wang_WY");intent.setData(uri);//指定特定浏览器intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");startActivity(intent);//uc浏览器:"com.uc.browser", "com.uc.browser.ActivityUpdate"// opera:"com.opera.mini.android", "com.opera.mini.android.Browser"//qq浏览器:"com.tencent.mtt", "com.tencent.mtt.MainActivity"}});//系统设置textView6 = (TextView) findViewById(R.id.textview6);textView6.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(Settings.ACTION_SETTINGS);startActivity(intent);}});}}

注意事项:

2.1.使用浏览器解析html后需要使用webview拨打加载网页中的电话超链接,如下所示:

wv_main = find(R.id.wv_main);//实例化webview
wv_main.loadUrl(url);
//启用支持javascript
WebSettings settings = wv_main.getSettings();
settings.setJavaScriptEnabled(true);
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
wv_main.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {Log.e("用户单击超连接", url);//判断用户单击的是那个超连接String tag = "tel";if (url.contains(tag)) {String mobile = url.substring(url.lastIndexOf("/") + 1);Log.e("mobile----------->",mobile);Intent mIntent = new Intent(Intent.ACTION_CALL);Uri data = Uri.parse(mobile);mIntent.setData(data);//Android6.0以后的动态获取打电话权限if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {startActivity(mIntent);//这个超连接,java已经处理了,webview不要处理return true;}else{//申请权限ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},1);return true;}}return true;}
}
为适应Android6.0以前版本在manifest中添加打电话权限
<uses-permission android:name="android.permission.CALL_PHONE"/>

2.2调用系统Email发送邮件:

在Android中,调用Email有三种类型的Intent:
     Intent.ACTION_SENDTO  无附件的发送
     Intent.ACTION_SEND  带附件的发送
     Intent.ACTION_SEND_MULTIPLE  带有多附件的发送

a:必须使用Intent.ACTION_SENDTO,而不是Intent.ACTION_SEND。否则就会出现很多非邮箱类应用

b:必须用  : Uri uri = Uri.parse("mailto:"+mailAdress); 
                           Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

而不是 :Intent intent = new Intent(Intent.ACTION_SENDTO);
               intent.putExtra(Intent.EXTRA_EMAIL, mailAdress);

否则找不到邮箱类应用。

当然,所谓的调用Email,只是说Email可以接收Intent并做这些事情,可能也有其他的应用程序实现了相关功能,所以在执行的时候,会出现选择框进行选择。

  2.2.1 使用SENTTO发送


Intent data=new Intent(Intent.ACTION_SENDTO);
data.setData(Uri.parse("mailto:way.ping.li@gmail.com"));
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
data.putExtra(Intent.EXTRA_TEXT, "这是内容");
startActivity(data); 

通过向Intent中putExtra来设定邮件的相关参数。

 2.2.2 使用SEND发送

Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "way.ping.li@gmail.com" };
String[] ccs = { "way.ping.li@gmail.com" };
String[] bccs = {"way.ping.li@gmail.com"};
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///mnt/sdcard/a.jpg"));
intent.setType("image/*");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
startActivity(intent);

很简单,发送邮件中,有收件者,抄送者,密送者。 也就是分别通过
     Intent.EXTRA_EMAIL,
     Intent.EXTRA_CC,
     Intent.EXTRA_BCC
  来进行putExtra来设定的,而单个附件的发送,则使用Intent.EXTRA_STREAM来设置附件的地址Uri。

2.2.3 使用SEND_MULTIPLE来进行多附件的发送

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
String[] tos = { "way.ping.li@gmail.com" };
String[] ccs = { "way.ping.li@gmail.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");ArrayList<uri> imageUris = new ArrayList<uri>();
imageUris.add(Uri.parse("file:///mnt/sdcard/a.jpg"));
imageUris.add(Uri.parse("file:///mnt/sdcard/b.jpg"));
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
intent.setType("image/*");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
startActivity(intent);

发送多个附件,最主要的时候,通过putParcelableArrayListExtra将多个附件的Uri地址List设置进去就OK了。其实还是很简单的。

附件:其他常用的Intent

Uri Action 功能 备注
geo:latitude,longitude Intent.ACTION_VIEW  打开地图应用程序并显示指定的经纬度       
geo:0,0?q=street+address  Intent.ACTION_VIEW  打开地图应用程序并显示指定的地址       
http://web_address Intent.ACTION_VIEW  打开浏览器程序并显示指定的URL       
https://web_address Intent.ACTION_VIEW  打开浏览器程序并显示指定的URL       
tel:phone_number  Intent.ACTION_CALL 打开电话应用程序并拨打指定的电话号码       
tel:phone_number Intent.ACTION_DIAL  打开电话应用程序并拨下指定的电话号码       
voicemail: Intent.ACTION_DIAL 打开电话应用程序并拨下指定语音邮箱的电话号码       
plain_text  Intent.ACTION_WEB_SEARCH  打开浏览器程序并使用Google搜索引擎搜索       

以上内容参考了原链接:https://blog.csdn.net/weixin_37730482/article/details/76090876,后续在遇到新问题还会继续更新。

Android 跳转电话、邮件、短信等系统页面相关推荐

  1. Android软件开发之发送短信与系统短信库解析(三十)

    Android软件开发之发送短信与系统短信库解析 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/arc ...

  2. Android 12.0Launcher3 电话和短信app图标显示未读短信和未接来电的条数

    1.概述 在12.0产品开发中,最近客户有需求要求在电话app图标显示未接来电的条数 在短信app图标上显示未读信息的条数 根据需求首选要在Launcher3的Launcher.java中,启动lau ...

  3. Android电话和短信拦截器

    1. 引言 在Android中实现电话和短信拦截器功能,这个是我从网上找的,并非自己实现,使用时需要修改一下代码(需要拦截的号码),测试已经通过,工程結构和实现如下. 2. 工程结构 3. 功能实现 ...

  4. Android开发学习之电话、短信、联系人

    作为一部手机,最重要的功能当属电话.短信.联系人了,所以今天想和大家分享的是关于Android电话.短信.联系人这块的API接口. 1.通话记录的获取 List<TelePhoneRecord& ...

  5. Android监听消息(二)——电话及短信监听

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2747字,预计阅读6分钟 前言 前面一篇<Android监听消息(一)--应用消息捕获>我们使用Notificat ...

  6. 五分钟实现Zabbix电话、短信、邮件、钉钉、飞书、企业微信等机器人报警

    Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道,假如半夜正在睡觉服务器异常了,这时候电话报警就非常必要. Spug推送助手针对常见的报警系统,内置好 ...

  7. Android 用代码实现防打扰【能够屏蔽电话和短信】

    Android 实现电话和短信拦截的功能如下: 1.实现广播接口,即[BroadcastReceiver] 检测到电话来时,则挂断电话,同时保存来电的电话号码,一做特殊处理[发信息或者一段时间后提示用 ...

  8. Prometheus如何集成免费电话和短信告警

    Prometheus是一个运维小伙伴都经常使用的开源系统监控和告警工具包,目前主要用于大规模的云端环境和容器化微服务(k8s)的监控.因具其有强大的多维度数据模型.可设置任意的多维标签.易于管理.多种 ...

  9. [高通SDM450][Android9.0]禁止电话、短信呼入

    文章目录 开发平台基本信息 问题描述 解决方法 禁止电话.短信呼入 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 公司有一款设备,作 ...

最新文章

  1. 英特尔发现Spectre和Meltdown 补丁对性能影响程度为0-21%
  2. javascript pattern
  3. python 线性回归 统计检验 p值_SPSS 25 数学统计分析工具
  4. leetcode算法题--反转链表★
  5. centos6.5卸载和安装mysql_Linux CentOS 6.5 卸载、tar安装MySQL的教程
  6. 【华为云技术分享】云小课 | 购买的数据盘在服务器看不到?磁盘初始化很重要!
  7. ES6 Reflect使用笔记
  8. .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
  9. android 微信朋友圈动画,使用Android 模仿微信朋友圈图片拖拽返回
  10. iPhoneiPad越狱后的操作
  11. 惯性力偶矩公式中j_惯性力偶矩的计算
  12. Win8 专业版安装Android Studio
  13. JavaScript网页特效编程百宝箱pdf
  14. 一个不错的SQLserver 数据库比较软件
  15. Qtxlsx操作Excel之使用
  16. 电路原理仿真测试软件,测试工具篇-运放测试电路仿真《TINA-TI》
  17. linux下配置调试debug
  18. MySQL Binlog温故知新
  19. 16进制颜色代码对照表 .
  20. 如何选择接口自动化测试工具

热门文章

  1. 字符输入函数详解(getchar的使用)
  2. VIVADO中IO管脚分配 IO PLANING
  3. 如何在 DAX 中创建 “虚拟关系”
  4. TamperMonkey脚本开发_无限制视频提取
  5. DAU/MAU?UGC?
  6. python 视频硬字幕提取 内嵌字幕提取工具
  7. 数据挖掘(二)预测潜在贷款发放客户
  8. 递归算法转换成非递归算法
  9. 对于跨境电商系统的介绍
  10. 算法设计与分析 Dij证明