落嘤神斧
落嘤神斧
  • 发布:2022-10-10 10:10
  • 更新:2022-10-11 10:03
  • 阅读:881

怎么获取短信的收件人号码?

分类:uni-app
  1. 相关环境:Android 上真机调试的 uniapp 项目。
  2. 需求:接收短信,然后将这个短信的发件人号码、收件人号码、短信内容保存备用;
  3. 在使用 native.js 实现 Android 监听广播的方法后,即可获取最新收到的短信;
  4. 获取到的短信数据里可以根据百度来的方法获取到发件人号码(getDisplayOriginatingAddress)、短信内容(getDisplayMessageBody),但是找不到有效的获取收件人号码的方法;
  5. 后来找到一个方法:先调用 SmsMessage.createFromPdu 方法,然后调用 getOriginatingAddress 方法;
  6. 但是实践后获取到的还是发件人的号码,并没有满足需求。

参考链接:
监听广播:https://ask.dcloud.net.cn/article/676
获取收件人号码方法:http://cn.voidcc.com/question/p-gezoacvj-bar.html

2022-10-10 10:10 负责人:无 分享
已邀请:
落嘤神斧

落嘤神斧 (作者)

找到解决方法了,通过 intent 即可获取当前接收短信的SIM卡的卡槽索引,代码如下:

 plus.android.invoke(extras, 'get', 'slot') 

至于获取卡槽索引后怎么获取手机号码,代码如下:

const main = plus.android.runtimeMainActivity();  
let context = plus.android.importClass('android.content.Context');  
const subscriptionManager = main.getSystemService(context.TELEPHONY_SUBSCRIPTION_SERVICE);  
// console.log(subscriptionManager);  
const simCount = plus.android.invoke(subscriptionManager, 'getActiveSubscriptionInfoCount');  
// console.log('获取SIM卡数量', simCount);  
const subscriptionInfoList = plus.android.invoke(subscriptionManager, 'getActiveSubscriptionInfoList');  
// console.log('获取SIM卡信息列表', subscriptionInfoList);  
for (let i = 0; i < simCount; i++) {  
    const simInfo = plus.android.invoke(subscriptionInfoList, 'get', i);  
    // console.log('simInfo', simInfo);  
    const phoneNumber = plus.android.invoke(simInfo, 'getNumber');  
    this.phoneNumberList.push({  
        cardIndex: i, // 卡槽索引  
        phoneNumber: phoneNumber // 卡槽中的号码  
   });  
}
落嘤神斧

落嘤神斧 (作者)

我有一个猜想:因为国外双卡双待手机很少,所以 Android 开发的时候就不考虑这个,直接通过获取本机号码就可以知道收件人号码

要回复问题请先登录注册