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:協議---調出手機中相關市場,直接定位到應用詳情
外部瀏覽器:直接支持
webview:直接支持(如果沒有在shouldOverrideUrlLoading中屏蔽)
權限添加:無