Android处理网页的短信链接
原创
©著作权归作者所有:来自51CTO博客作者androidyue的原创作品,请联系作者获取转载授权,否则将追究法律责任
最近遇到了很多网页,尤其是通过短信找回密码的网站,其规范格式为
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);
}
}
对于有的链接,可能是不标准的,比如上述代码中有的会出现两个”?”,不过这个也能处理。当然根据自己的情况实现自己的处理逻辑。