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

标签 android sms

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

最佳答案

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

 <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。

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()
}

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

 <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 是为了监听系统范围的服务 我们有充分的理由高度重视。

关于android - 以编程方式获取android手机smsc号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378895/

相关文章:

java - 来自 Java Web 应用程序的 SMS

java - 在具有嵌套非原始元素的对象中实现 Parcelable

android - Intent 过滤器适用于模拟器,但不适用于设备

database - 从网站向用户发送短信 - 如何?

python - 通过 Twilio 以短信形式发送 MySql 数据

java - 将java字符串转换为7位字符串

android - 如何在Imageview中获取图像的高度?

android + sourceCompatibility JavaVersion.VERSION_11 : error: package android. 操作系统不存在

android - 将滚动 fragment 设置为滚动 Activity

android - 发长短信收错