最近遇到了很多网页,尤其是通过短信找回密码的网站,其规范格式为 ​​106659999​​ ,但是各个系统对这个格式支持也不是很统一的,我先后在ios和windows Phone上做了测试,在ios上会跳转到短信程序,但是号码和短信内容都是无法获取的,而Windows Phone上没有任何响应。在Android上,不同的浏览器处理的也是不一样的。有些是将这些(sms:106659999?body=修改密码)作为号码,系统浏览器的处理只是能显示出号码,不能显示出短信内容。

这里我是这样实现同时显示号码和短信内容的,请参考一下代码:

package ps.androidyue.demo.send_sms;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

public class SendSMSDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//短信超链接的内容,包含号码和短信内容
String s = "sms:106901956100041??body=wmm%E6%96%B0%E5%AF%86%E7%A0%81";
//获取短信号码,包含"sms:"
String address = s.contains("?") ? s.substring(0, s.indexOf("?")) : s;
//获取短信内容,如果没有则为""
String body = s.replaceAll(address, "");
body = body.contains("=") ? body.substring(body.indexOf("=") + 1) : body;
//对于中文内容进行Uri解码
body = Uri.decode(body);
Uri smsToUri = Uri.parse(address);// 联系人地址
Intent mIntent = new Intent(android.content.Intent.ACTION_SENDTO,smsToUri);
//设置短信的内容
mIntent.putExtra("sms_body", body);
startActivity(mIntent);
}
}


对于有的链接,可能是不标准的,比如上述代码中有的会出现两个”?”,不过这个也能处理。当然根据自己的情况实现自己的处理逻辑。