uniapp 获取手机短信内容

1,528 阅读1分钟

在uniapp的manifest.json中的权限配置中需要勾选以下权限

image.png

首先载入软件的时候请求获取读取短信的权限

onLoad(){
    this.getMessage()
    //有的手机可能不会弹出弹窗
},
methods: {
    getMessage() {
	plus.android.requestPermissions(['android.permission.READ_SMS'], function(e) {
            if (e.deniedAlways.length > 0) { //权限被永久拒绝
		// 弹出提示框解释为何需要权限,引导用户打开设置页面开启
		console.log('Always Denied!!! ' + e.deniedAlways.toString());
            }
            if (e.deniedPresent.length > 0) { //权限被临时拒绝
		// 弹出提示框解释为何需要权限,可再次调用plus.android.requestPermissions申请权限
		console.log('Present Denied!!! ' + e.deniedPresent.toString());
            }
            if (e.granted.length > 0) { //权限被允许
		//调用依赖获取权限的代码
		console.log('Granted!!! ' + e.granted.toString());
            }
        }, function(e) {
            console.log('Request Permissions error:' + JSON.stringify(e));
	});
    }
}

当按下按钮时,获取短信内容

//methods 
upMsg() {
        var main = plus.android.runtimeMainActivity();
	var Uri = plus.android.importClass('android.net.Uri');
	var ContactsContract = plus.android.importClass('android.provider.ContactsContract');
	var uri = Uri.parse('content://sms/');
	var cr = main.getContentResolver();
	plus.android.importClass(cr);
	var cur = cr.query(uri, null, null, null, null);
	plus.android.importClass(cur);
	cur.moveToFirst();
        
        // 这一块设置了拿到当前时间的前五分钟,默认是获取全部的短信信息
        // 小米系统默认拿到的不是全部短信信息,需要在权限中开启"通知类短信"这个权限才能拿到全部
        // let newdata = new Date().getTime()
        // 拿到当前时间的前五分钟
	// let fiveMinsAgo = new Date(newdata - 5 * 60 * 1000).getTime();
        // var selection = "date > " + fiveMinsAgo;
        // var cur = cr.query(uri, null, selection, null, null);
        
	while (cur.moveToNext()) {
            // 发送人号码
            var index_Address = cur.getColumnIndex('address');
            var address = cur.getString(index_Address);
            console.log("发送人号码:" + address)
            //短信内容
            var index_Body = cur.getColumnIndex('body');
            var body = cur.getString(index_Body);
            console.log("短信内容:" + body)
            //短信类型1接收 2发送
            var index_Type = cur.getColumnIndex('type');
            var type = cur.getString(index_Type);
            console.log("短信类型:" + type)
            // 发送日期
            var smsDate = cur.getString(cur.getColumnIndex("date"))
            smsDate = this.changeTime(smsDate)
            console.log("发送日期:" + smsDate)
            console.log("==============================")
        }
        cur.close();
},