美文网首页
发送短短信

发送短短信

作者: 坠叶飘香 | 来源:发表于2019-05-21 10:31 被阅读0次
发送短信.jpg

1.sendTextMessage

frameworks\base\telephony\java\android\telephony\SmsManager.java

public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent) {
  sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,true /* persistMessage*/);
}

2.sendTextMessageInternal

frameworks\base\telephony\java\android\telephony\SmsManager.java

private void sendTextMessageInternal(String destinationAddress, String scAddress,
            String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
            boolean persistMessage) {
        if (TextUtils.isEmpty(destinationAddress)) {
            throw new IllegalArgumentException("Invalid destinationAddress");
        }

        if (TextUtils.isEmpty(text)) {
            throw new IllegalArgumentException("Invalid message body");
        }

        try {
            ISms iccISms = getISmsServiceOrThrow();
            iccISms.sendTextForSubscriber(getSubscriptionId(), ActivityThread.currentPackageName(),
                    destinationAddress,
                    scAddress, text, sentIntent, deliveryIntent,
                    persistMessage);
        } catch (RemoteException ex) {
            // ignore it
        }
}

3.sendTextForSubscriber

frameworks\opt\telephony\src\java\com\android\internal\telephony\UiccSmsController.java

public void sendTextForSubscriber(int subId, String callingPackage, String destAddr,
            String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
            boolean persistMessageForNonDefaultSmsApp) {
        IccSmsInterfaceManager iccSmsIntMgr = getIccSmsInterfaceManager(subId);
        if (iccSmsIntMgr != null) {
            iccSmsIntMgr.sendText(callingPackage, destAddr, scAddr, text, sentIntent,
                    deliveryIntent, persistMessageForNonDefaultSmsApp);
        } else {
            Rlog.e(LOG_TAG,"sendTextForSubscriber iccSmsIntMgr is null for" +
                          " Subscription: " + subId);
            sendErrorInPendingIntent(sentIntent, SmsManager.RESULT_ERROR_GENERIC_FAILURE);
        }
}

4.sendText

frameworks\opt\telephony\src\java\com\android\internal\telephony\IccSmsInterfaceManager.java

public void sendText(String callingPackage, String destAddr, String scAddr,
            String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
            boolean persistMessageForNonDefaultSmsApp) {
        mPhone.getContext().enforceCallingPermission(
                Manifest.permission.SEND_SMS,
                "Sending SMS message");
        sendTextInternal(callingPackage, destAddr, scAddr, text, sentIntent, deliveryIntent,
            persistMessageForNonDefaultSmsApp);
}

5.sendTextInternal

frameworks\opt\telephony\src\java\com\android\internal\telephony\IccSmsInterfaceManager.java

private void sendTextInternal(String callingPackage, String destAddr, String scAddr,
            String text, PendingIntent sentIntent, PendingIntent deliveryIntent,
            boolean persistMessageForNonDefaultSmsApp) {
        
        if (mAppOps.noteOp(AppOpsManager.OP_SEND_SMS, Binder.getCallingUid(),
                callingPackage) != AppOpsManager.MODE_ALLOWED) {
            return;
        }
        if (!persistMessageForNonDefaultSmsApp) {
            enforcePrivilegedAppPermissions();
        }
        destAddr = filterDestAddress(destAddr);
        mDispatcher.sendText(destAddr, scAddr, text, sentIntent, deliveryIntent,
                null/*messageUri*/, callingPackage, persistMessageForNonDefaultSmsApp);
}

6.sendText

frameworks\opt\telephony\src\java\com\android\internal\telephony\ImsSMSDispatcher.java

public void sendText(String destAddr, String scAddr, String text, PendingIntent sentIntent,
            PendingIntent deliveryIntent, Uri messageUri, String callingPkg,
            boolean persistMessage) {
        Rlog.d(TAG, "sendText");
        if (isCdmaMo()) {
            mCdmaDispatcher.sendText(destAddr, scAddr,
                    text, sentIntent, deliveryIntent, messageUri, callingPkg, persistMessage);
        } else {
            mGsmDispatcher.sendText(destAddr, scAddr,
                    text, sentIntent, deliveryIntent, messageUri, callingPkg, persistMessage);
        }
}

相关文章

  • 回流短信

    概念 回流短信是为了让新增用户或近期流失的用户,受到短信激活回归APP而对此类用户发送的短信。 流程 短信发送→短...

  • android 实例短信防火墙

    短信防火墙 系统发送短信广播时,是怎么把短信内容存入广播中的,我们就怎么取出来 如果短信过长,那么发送会拆分多条短...

  • 短信

    扣费,短扣 转储蓄短信 点击忘记密码,没有发送短信,转手机银行客户端 VIP免费短信转储蓄短信

  • 责任链模式-短链点击行为记录

    简介 9月份做了个短信发送的功能,考虑到短信文本字数的限制,需要将原始长链接转换为短链发送,并且需要记录每次的短链...

  • 2018-10-29

    短信炸弹漏洞 漏洞描述 短信炸弹漏洞是利用平台发送短信的接口未做任何限制的漏洞,不限时无限次或者短时间内多次发送短...

  • 如何通过短链接跳转到小程序,或者跳转至小程序webview一个h

    theme: channing-cyan 一、需求背景: 公司需要通过发送短信携带短链接,用户点击短链接跳转到小程...

  • 抽象工厂(Abstract Factory)

    邮差 邮件发送 短息发送 以上是产品 抽象工厂 邮件工厂 短信工厂 测试类 如果想再添加一个用车马发送消息的邮差,...

  • java实现发送国际短信的功能

    由于公司的客户遍布全球,最近会有一些要发送海外的短信的需求,所以今天想说下发送国际短信的功能,接入的手续和一般的短...

  • 美妆店用短信软件 生日祝福定时发送

    以前我们都是一个个给客户发送生日祝福短信,如果哪天忘记了,难免就忘记给客户发送祝福短信了。现在我们办理了乐信网页短...

  • 用Laravel Sms实现 laravel短信验证码的发送

    阿里云短信服务使用Laravel Sms这个扩展包实现短信验证码的发送,这里以阿里云的短信服务为例:首先,要创建短...

网友评论

      本文标题:发送短短信

      本文链接:https://www.haomeiwen.com/subject/otddzqtx.html