在uniapp的manifest.json中的权限配置中需要勾选以下权限
首先载入软件的时候请求获取读取短信的权限
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();
},