摩西bfjr
摩西bfjr
  • 发布:2017-11-24 16:16
  • 更新:2021-01-27 15:59
  • 阅读:3757

android遍历短信/读取短信

分类:Native.js

我本机华为meta8通过以下代码是可以遍历所有短息内容的。

        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();  
        while(cur.moveToNext()) {  
            var index_Address = cur.getColumnIndex("address");  
            var address = cur.getString(index_Address);  
            //短信内容  
            var index_Body = cur.getColumnIndex("body");  
            var body = cur.getString(index_Body);  
            //类型1接收 2发送  
            var index_Type = cur.getColumnIndex("type");  
        }  
        cur.close();

希望对大家有帮助!

2 关注 分享
Float 792521221@qq.com

要回复文章请先登录注册

hzg98@qq.com

hzg98@qq.com

这里有个bug,第一条短信没被遍历,改一下:
```
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 index_Address1 = cur.getColumnIndex("address");
let address1 = cur.getString(index_Address1);
//短信内容
let index_Body1 = cur.getColumnIndex("body");
let body1 = cur.getString(index_Body1);
//类型1接收 2发送
let index_Type1 = cur.getColumnIndex("type");
let type1 = cur.getString(index_Type1);
while(cur.moveToNext()) {
var index_Address = cur.getColumnIndex("address");
var address = cur.getString(index_Address);
//短信内容
var index_Body = cur.getColumnIndex("body");
var body = cur.getString(index_Body);
//类型1接收 2发送
var index_Type = cur.getColumnIndex("type");
}
cur.close();
```
2021-01-27 15:59
1124839262@qq.com

1124839262@qq.com

非常明显的bug,moveFirst了,又moveToNext,这是忽略第一个?
2021-01-25 17:01
robortly@163.com

robortly@163.com

求助,请问如何判断是哪个卡槽收到的短信?
2021-01-05 16:21
xpj889n@outlook.com

xpj889n@outlook.com

厉害
2021-01-01 13:55
大肥光光

大肥光光

有些机型不能完全获取完所有短信。各位大哥有没有什么解决方案?
https://ask.dcloud.net.cn/article/id-676__page-2 这个监听短信的 方案中 :
var SmsMessage = plus.android.importClass('android.telephony.SmsMessage'); 这个是否能用于遍历短信?
2020-09-16 17:04
wherehyz234234@163.com

wherehyz234234@163.com

回复 1172777707@qq.com :
短信一多,app就卡死了,有什么可以优化的吗
2020-06-23 14:22
1172777707@qq.com

1172777707@qq.com

readsms() {
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();
while (cur.moveToNext()) {
var index_Address = cur.getColumnIndex("address");
var address = cur.getString(index_Address);
//短信内容
var index_Body = cur.getColumnIndex("body");
var body = cur.getString(index_Body);
//类型1接收 2发送
var index_Type = cur.getColumnIndex("type");
var type = cur.getString(index_Type);
// console.log(address, body, type);
}



亲测可用
2020-05-25 20:53
156790188@qq.com

156790188@qq.com

怎么无效?到 var cr = main.getContentResolver(); 出问题了,加var main = plus.android.runtimeMainActivity();也不行
2020-05-08 01:14
156790188@qq.com

156790188@qq.com

回复 agility_jin@outlook.com :
我也是
2020-05-07 23:55
jxjyzzc

jxjyzzc

回复 xxapollo@qq.com :
其实不写的原因是由于这个调用太耗资源了,可能是改写在初始化里了。另外为什么我红米手机用楼主方法每获取到短信啊?
2019-11-19 11:25