Android 跳转电话、邮件、短信等系统页面
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 跳转电话、邮件、短信等系统页面相关推荐
- Android软件开发之发送短信与系统短信库解析(三十)
Android软件开发之发送短信与系统短信库解析 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/arc ...
- Android 12.0Launcher3 电话和短信app图标显示未读短信和未接来电的条数
1.概述 在12.0产品开发中,最近客户有需求要求在电话app图标显示未接来电的条数 在短信app图标上显示未读信息的条数 根据需求首选要在Launcher3的Launcher.java中,启动lau ...
- Android电话和短信拦截器
1. 引言 在Android中实现电话和短信拦截器功能,这个是我从网上找的,并非自己实现,使用时需要修改一下代码(需要拦截的号码),测试已经通过,工程結构和实现如下. 2. 工程结构 3. 功能实现 ...
- Android开发学习之电话、短信、联系人
作为一部手机,最重要的功能当属电话.短信.联系人了,所以今天想和大家分享的是关于Android电话.短信.联系人这块的API接口. 1.通话记录的获取 List<TelePhoneRecord& ...
- Android监听消息(二)——电话及短信监听
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2747字,预计阅读6分钟 前言 前面一篇<Android监听消息(一)--应用消息捕获>我们使用Notificat ...
- 五分钟实现Zabbix电话、短信、邮件、钉钉、飞书、企业微信等机器人报警
Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道,假如半夜正在睡觉服务器异常了,这时候电话报警就非常必要. Spug推送助手针对常见的报警系统,内置好 ...
- Android 用代码实现防打扰【能够屏蔽电话和短信】
Android 实现电话和短信拦截的功能如下: 1.实现广播接口,即[BroadcastReceiver] 检测到电话来时,则挂断电话,同时保存来电的电话号码,一做特殊处理[发信息或者一段时间后提示用 ...
- Prometheus如何集成免费电话和短信告警
Prometheus是一个运维小伙伴都经常使用的开源系统监控和告警工具包,目前主要用于大规模的云端环境和容器化微服务(k8s)的监控.因具其有强大的多维度数据模型.可设置任意的多维标签.易于管理.多种 ...
- [高通SDM450][Android9.0]禁止电话、短信呼入
文章目录 开发平台基本信息 问题描述 解决方法 禁止电话.短信呼入 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 公司有一款设备,作 ...
最新文章
- 英特尔发现Spectre和Meltdown 补丁对性能影响程度为0-21%
- javascript pattern
- python 线性回归 统计检验 p值_SPSS 25 数学统计分析工具
- leetcode算法题--反转链表★
- centos6.5卸载和安装mysql_Linux CentOS 6.5 卸载、tar安装MySQL的教程
- 【华为云技术分享】云小课 | 购买的数据盘在服务器看不到?磁盘初始化很重要!
- ES6 Reflect使用笔记
- .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
- android 微信朋友圈动画,使用Android 模仿微信朋友圈图片拖拽返回
- iPhoneiPad越狱后的操作
- 惯性力偶矩公式中j_惯性力偶矩的计算
- Win8 专业版安装Android Studio
- JavaScript网页特效编程百宝箱pdf
- 一个不错的SQLserver 数据库比较软件
- Qtxlsx操作Excel之使用
- 电路原理仿真测试软件,测试工具篇-运放测试电路仿真《TINA-TI》
- linux下配置调试debug
- MySQL Binlog温故知新
- 16进制颜色代码对照表 .
- 如何选择接口自动化测试工具