tel:协议---拨打电话

<a href="tel:">调出拨号界面</a>

<a href="tel:10086">调出拨号界面并输入号码</a>

外部浏览器:直接支持打开

webview不实现setWebViewClient:直接支持打开

webview实现setWebViewClient:默认不支持,需要shouldOverrideUrlLoading方法中处理实现,

if(url.startsWith("tel:"))
{
//直接调出界面,不需要权限
Intent sendIntent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));

startActivity(sendIntent);

或者

//直接拨打,需要权限<uses-permission android:name="android.permission.CALL_PHONE"/>

Intent sendIntent = new Intent(Intent.ACTION_CALL, Uri.parse(url));

startActivity(sendIntent);

return true;//否则键盘回去,页面显示"找不到网页"
}

sms:协议---发送短信

<a href="sms:">调出发短信界面</a></br>
<a href="sms:10086">调出发短信界面显示号码</a></br>
<a href="sms:10086?body=contents">调出发短信界面显示号码和发送内容</a></br>
<a href="sms:10086&body=contents1">ios调出发短信界面显示号码和发送内容</a></br>
<a href="sms:10086;10010?body=contents2">调出发短信界面给多个号码发内容</a><br/>
<a href="sms:+10086?body=contents3">调出发短信界面显示号码 </a></br>
<a href="sms:+10086;10010?body=contents4">调出发短信界面给多个号码发内容 </a><br/>

<a href="smsto:10086">smsto10086</a></br>

<!-- 发彩信 -->
<a href="mms:10086">mms:10086</a></br>
<a href="mmsto:10086"> mmsto:10086</a></br>

外部浏览器:直接支持打开

webview不实现setWebViewClient:直接支持打开

webview实现setWebViewClient:默认不支持,需要shouldOverrideUrlLoading方法中处理实现,

if(url.startsWith("sms:")||url.startsWith("smsto:")||url.startsWith("mms:")||url.startsWith("mmsto:"))
{
//直接调出界面,不需要权限
Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(sendIntent);

或者
//打开短信页面,不需要权限
Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); 
startActivity(sendIntent);

或者

//import android.telephony.SmsManager;

SmsManager smsg=SmsManager.getDefault();//----看不到已发送信息。。。
smsg.sendTextMessage("10086", null, "tttttt", null, null);

ps:需要权限

<uses-permission android:name="android.permission.SEND_SMS"/>

或者

ContentValues values = new ContentValues(); //---可以看到已发的信息
values.put("address", "10086");
values.put("body", "contents");
ContentResolver contentResolver = getContentResolver();
// 实验中两者都会在信息栏中保存所发的信息。
contentResolver.insert(Uri.parse("content://sms/sent"), values);
// contentResolver.insert(Uri.parse("content://sms/inbox"), values);

ps:content:协议可以参考http://blog.sina.com.cn/s/blog_674fdbb501011lfi.html

ps:需要权限

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>

return true;//否则键盘回去,页面显示"找不到网页"
}

mailto:协议---发送邮件

<a href="mailto:122633753@qq.com?subject=主题&body=内容">发邮件主题和内容给某邮箱</a></br>
<a href="mailto:122633753@qq.com,851342455@qq.com">发邮件给多人</a></br>
<a href="mailto:?to=&subject=主题&body=内容">发邮件选联系人</a></br>

外部浏览器:直接支持打开手机客户端

webview不实现setWebViewClient:直接支持打开

webview实现setWebViewClient:默认不支持,需要shouldOverrideUrlLoading方法中处理实现,

if(url.startsWith("mailto:"))
{
Intent mailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); //打开发邮件窗口
startActivity(mailIntent);
ps:需要权限     <uses-permission android:name="android.permission.SEND_TO"/>

或者
发送邮件支持多联系人,cc, bcc, body, subject等等,开始只是用Uri.parse(url)这样的方式,但是发现原生的邮箱对这个支持的不好,想到一中新的办法,把这些发送的内容都写到intent的extra中,这样就对应了。
Intent mailIntent = new Intent(Intent.ACTION_SEND);
// 可以试下“plain/text”与“text/plain”的区别
mailIntent.setType("plain/text");
String[] arrReceiver = { "10086@qq.com", "10086@qq.com" };
String[] arrCc = { "10086@qq.com", "10086@qq.com" };
String[] arrBcc = { "10086@qq.com", "10086@qq.com" };
String mailSubject = "MailSubject";
String mailBody = "Mail Sodino Test";
String attachPath = "file:///sdcard/UCDownloads/ATest.apk"; //添加附件
mailIntent.putExtra(Intent.EXTRA_EMAIL, arrReceiver);
mailIntent.putExtra(Intent.EXTRA_CC, arrCc);
mailIntent.putExtra(Intent.EXTRA_BCC, arrBcc);
mailIntent.putExtra(Intent.EXTRA_SUBJECT, mailSubject);
mailIntent.putExtra(Intent.EXTRA_TEXT, mailBody);
mailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(attachPath));
mailIntent.setType("audio/mp3");
startActivity(Intent.createChooser(mailIntent, "邮件发送中……"));

return true;
}

 ps:可以参考http://blog.csdn.net/sodino/article/details/5810481

intent:协议---

参考:

用途:

1 调用短信(无论在外部浏览器,还是在)

这个没有data,能进入sms,但是有 //
<a href="intent://?body=hello#Intent;scheme=sms;package=com.android.mms;end"> 短信1 </a> </br>
这个能进入SMS,但是有 //
<a href="intent://#Intent;scheme=sms;package=com.android.mms;end"> 短信2 </a> </br>
这个完全没问题
<a href="intent:555?body=hello#Intent;scheme=sms;package=com.android.mms;end">短信3 </a> </br>

外部浏览器:直接支持打开

webview不实现setWebViewClient:直接支持打开

webview实现setWebViewClient:默认不支持,需要shouldOverrideUrlLoading方法中处理实现,

if(url.startsWith("intent:"))
{
Intent intent = null;
try {
intent = Intent.getIntent("intent://?body=hello#Intent;scheme=sms;package=com.android.mms;end");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startActivity(intent);
return true;
}

2 调出三方应用

一 百度地图

<a href="intent://map/marker?location=40.047669,116.313082&title=我的位置&content=百度奎科大厦&src=xxx|Browserxx#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end">地图标点 </a> </br>
<a href="bdapp://map/marker?location=40.047669,116.313082&title=我的位置&content=百度奎科大厦&src=yourCompanyName|yourAppName">地图标点</a>

外部浏览器:直接支持打开,如果没有安装,会调起应用商店 定位到百度地图

webview不实现setWebViewClient:无法响应

webview实现setWebViewClient:需要shouldOverrideUrlLoading方法中处理实现,

if(url.startsWith("intent:"))
{
Intent intent = null;
try {
intent = Intent.getIntent("intent://map/marker?location=40.047669,116.313082&title=我的位置&content=百度奎科大厦&src=xxx|Browserxx#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startActivity(intent); 
return true;
}

ps:如果没有安装百度地图,是无效的

类似豆瓣:

<a href="intent://doubanmovie?#Intent;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;package=com.douban.movie;end"> 豆瓣 </a> </br>

二 调出市场

<a href="intent://details?id=com.tencent.mobileqq#Intent;scheme=market;package=com.xiaomi.market;end"> details?id=com.tencent.mobileqq </a> </br>

<a href="intent://search?q=pname:com.tencent.mobileqq#Intent;scheme=market;package=com.xiaomi.market;end"> search?q=pname:com.tencent.mobileqq </a> </br>

说明:已经安装有 小米市场 ,才有效果。。;浏览器可以直接支持。。

<a href="intent://details?id=com.xiaojinniu.smalltaurus#Intent;scheme=market;package=com.xiaojinniu.smalltaurus;end"> downLoad </a>
<a href="intent://?#Intent;scheme=market;action=android.intent.action.VIEW;package=com.xiaojinniu.smalltaurus;end"> 222 </a>

说明:在外部浏览器打开就可以(uc和百度不行),放到webview中就不行。。

 三  自定义schema

<a href="myapp://scan"> myapp:// </a> </br>
<a href="zxing://scan/"> zxing://scan/ </a>

------这样的话,如果没有安装,就显示打不开网页  

<a href="intent://scan#Intent;scheme=myapp;package=com.example.schematest1;end">myapp test </a> </br> 
host 填 host=scan 的时候,下面这2种这样会吊起应用商店, 但是当host填空时,就能直接掉起 app 
<a href="intent://#Intent;scheme=myapp;package=com.example.schematest1;end">myapp test </a> </br> 
<a href="intent://?#Intent;scheme=myapp;package=com.example.schematest1;end">myapp test </a> </br> 
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a> </br>

ps:统一处理

外部浏览器:直接支持打开,如果没有安装,会调起应用商店选择

webview不实现setWebViewClient:无法响应链接

webview实现setWebViewClient:无法响应链接

参考:http://blog.csdn.net/shichaosong/article/details/12187403

market:协议---调出手机中相关市场,直接定位到应用详情

•只有2中用法(而且安卓系统默认支持):
•Market://details?id=com.xiaojinniu.smalltaurus
•http://market.android.com/details?id=com.xiaojinniu.smalltaurus

外部浏览器:直接支持

webview:直接支持(如果没有在shouldOverrideUrlLoading中屏蔽)

权限添加:无

Android网页中tel,sms,mailTo,Intent,Market协议用法总结的更多相关文章

  1. Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...

  2. 如何在Android应用中引入外部网页

    在某些情况下,我们需要在Android应用中引入外部网页,这里记录一下如何操作(其实很简单^.^). 先介绍一下开发环境: 开发工具:Android Studio 1.5 SDK API版本:17 操 ...

  3. Android Fragment中使用Intent组件拍照

    要在activity里面去接受,然后传递给fragment对象,fragment有很多回调调用不到 你的设备有摄像头吗? 为了确保市场上的大多数设备都能运行你的程序,必须在项目中做一些检测,保证使用的 ...

  4. Intent 对象在 Android 开发中的应用

    转自(http://www.ibm.com/developerworks/cn/opensource/os-cn-android-intent/) Android 是一个开放性移动开发平台,运行在该平 ...

  5. Android学习记录(7)—Intent中显示意图和隐式意图的用法

    Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的 ...

  6. Android系统中标准Intent的使用

    Android系统用于Activity的标准Intent 1.根据联系人ID显示联系人信息= Intent intent=new Intent(); intent.setAction(Intent.A ...

  7. mailto实现将用户在网页中输入的内容传递到本地邮件客户端

    背景: 想在自己的网站中有这样一个设计: 用户点击提交按钮之后,就会打开本地邮件客户端,并自动将他在输入框中输入的内容作为邮件的内容,像下面这样: mailto可以帮助实现这个功能. 简介: mail ...

  8. 我的Android最佳实践之—— 常用的Intent.Action(转)

    1.从google搜索内容 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putEx ...

  9. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

随机推荐

  1. json 数据 添加 删除 排序

    js数据格式和json数据格式,各有各的用处,就个人而言,json更好用一点,js自身的数组和对像限制比较多. 以js的数组举例: var a = ['1']; a[5] = 52; a.length ...

  2. csrf跨站请求伪造

    如何杜绝跨站请求伪造? 1.要让服务器知道本次请求是不是冒用了用户的身份→ 2.服务器发给用户一个凭证,用户请求时需携带此凭证→ 3.此凭证只能用户看到而且冒用者看不到→ 4.这就用到了浏览器的安全机 ...

  3. mysql-5.7.14 源码安装笔记

    安装编译 下载源码 mysql-5.7.14.tar.gz 解压定义安装变量 cd /usr/local/src mysql_version="mysql-5.7.14" tar ...

  4. 论人品 | | noip1015模拟考

    第一题:火车进站... 由于有了老师给的助攻,第一题的时间为半小时,主要在读题了.... jzoj1146 第二题:car 难在正方形的计算? 第二题时间:1.5hour 第三题:sort排序?

  5. 下拉框数据的动态选择,类似级联ajax刷新数据

    简单的两个下拉列表,第二个中的数据与第一个下拉框相关: --------------------var selected = $(this).children('option:selected').v ...

  6. cxf+spring+数字签名开发webservice(二)

    场景         上一章中的webservice接口,因为现场正式环境的项目与外部单位网络不通,是通过前置机与外部进行数据交换,所以我们将webservice部署在前置机,在使用HttpURLCo ...

  7. 从github上获取资源速度慢的解决办法

    今天在github上clone一个仓库的时候,速度非常慢,只有3kb/s,开代理也没用,网上找到的各种git config的方法也没有用,最后想到设置hosts试试.于是在git的安装目录下找到了/e ...

  8. python day1 变量的命名和赋值

    变量 一.变量的命名 1.不能以数字进行开头 2.不能包含特殊字符 3.不能是python内部的某些关键字 a = 123print(a)123 --------------------------- ...

  9. 关于CSS中text-decoration值没有替换而是累积的疑问

    做了个实验: <!DOCTYPE html> <html> <head> <title>BaiDuTest.html</title> < ...

  10. 封装ios静态库碰到的一些问题(二)

    在静态库建立好了之后呢,于是应用程序就引用它,加上拷贝的h文件,但是引用之后Build之后提示很多sybmbol 重复 于是进行检查,确实由于是从其他工程修改过来的,很多基础库都引用了,删除之,最后就 ...