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

以编程方式获取android手机smsc号码,android,sms,Android,Sms,我正在尝试在android中以编程方式获取手机的短信中心号码(smsc)。可能吗?我尝试过搜索,但什么也找不到?您可以进入android文档并使用getServiceCenterAddress()方法。 (android.telephony.SmsMessage)正如有人指出的那样!, 但以下是步骤: 0在清单文件中允许这些权限 <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-

我正在尝试在android中以编程方式获取手机的短信中心号码(smsc)。可能吗?我尝试过搜索,但什么也找不到?

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

正如有人指出的那样!, 但以下是步骤: 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" />

  • 创建广播接收器服务
  • 您将收到pdu格式的SMS onReceive,然后需要将其转换为SMSMessage 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()
    }
    
    公共类SMSProcessor扩展广播接收机{
    //处理onReceive
    公共void onReceive(上下文、意图){
    Bundle smsBundle=intent.getExtras();
    SmsMessage[]消息=null;
    字符串strMessage=“”;
    clientSMS=新的clientSMS();
    if(smsBundle!=null){
    Object[]pdus=(Object[])smsBundle.get(SMS_BUNDLE);
    消息=新的SmsMessage[pdus.length];
    for(int i=0;i=Build.VERSION\u code.M){
    字符串格式=smsBundle.getString(“格式”);
    messages[i]=SmsMessage.createFromPdu((字节[])PDU[i],格式);
    }否则{
    messages[i]=SmsMessage.createFromPdu((字节[])PDU[i]);
    }
    clientSMS.SetSMC_原始_消息(消息[i].getServiceCenterAddress());
    }
    //使用getServiceCenterAddress()的smsc aka值执行操作
    }
    
    不要忘记在清单文件中注册服务

     <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以侦听系统范围的服务
    我们设置高优先级是有充分理由的。

    用户和密码如何,有没有办法获取它们?哪个密码和用户?你能说得具体点吗?我可以使用其ip、用户和密码连接到SMSC服务器,例如使用此项目:。或者可能我搞错了?这与上面的问题不同。问题w关于如何在安卓手机中获取接收短信的SMSC id/手机。