以编程方式获取android手机smsc号码

时间:2014-08-19 08:32:25

标签: android sms

我想在android中以编程方式获取手机的短信中心号码(smsc)。那可能吗 ?我试过搜索但找不到任何东西?

2 个答案:

答案 0 :(得分:1)

正如有人指出的那样!  但这里是步骤: 0.在清单文件中允许这些权限

 <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
  1. 创建广播接收器服务
  2. 您将收到pdu格式的短信onReceive,然后您需要将其转换为SMSMessage。
  3. SMSMessage有一堆属性和方法,其中之一就是 getServiceCenterAddress()返回中继此消息的SMS服务中心的地址,如果没有则返回null。

      public class SMSProcessor extends BroadcastReceiver {
    // handle the onReceive 
      public void onReceive(Context context, Intent intent) {
    
        Bundle smsBundle = intent.getExtras();
        SmsMessage[] messages = null;
            String strMessage = "";
            clientSMS = new ClientSMS();
            if (smsBundle != null) {
                Object[] pdus = (Object[]) smsBundle.get(SMS_BUNDLE);
                messages = new SmsMessage[pdus.length];
                for (int i = 0; i < messages.length; i++) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        String format = smsBundle.getString("format");
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format);
                    } else {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    }
    
                clientSMS.setSmsc_originating_message(messages[i].getServiceCenterAddress());
    
    
      }
       // do stuff with the smsc aka value of getServiceCenterAddress()
    }
    

    不要忘记在Manifest文件中注册服务

     <receiver
                android:name=".controllers.SMSProcessor"
                android:exported="true">
                <intent-filter android:priority="999">
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                </intent-filter>
            </receiver>
    

    注意:export = true以便侦听系统范围的服务 我们高度重视有充分理由。

答案 1 :(得分:0)

你可以进入android文档并使用getServiceCenterAdress()方法。 (android.telephony.SmsMessage)