美文网首页
发送长信息

发送长信息

作者: 坠叶飘香 | 来源:发表于2019-05-20 23:32 被阅读0次

1.sendMultipartTextForSubscriber

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

public void sendMultipartTextForSubscriber(int subId, String callingPackage, String destAddr,
            String scAddr, List<String> parts, List<PendingIntent> sentIntents,
            List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp)
            throws android.os.RemoteException {
        IccSmsInterfaceManager iccSmsIntMgr = getIccSmsInterfaceManager(subId);
        if (iccSmsIntMgr != null ) {
            iccSmsIntMgr.sendMultipartText(callingPackage, destAddr, scAddr, parts, sentIntents,
                    deliveryIntents, persistMessageForNonDefaultSmsApp);
        } else {
            Rlog.e(LOG_TAG,"sendMultipartTextForSubscriber iccSmsIntMgr is null for" +
                          " Subscription: " + subId);
            sendErrorInPendingIntents(sentIntents, SmsManager.RESULT_ERROR_GENERIC_FAILURE);
        }
}

2.sendMultipartText

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

public void sendMultipartText(String callingPackage, String destAddr, String scAddr,
            List<String> parts, List<PendingIntent> sentIntents,
            List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) {
        //权限
        mPhone.getContext().enforceCallingPermission( 
                Manifest.permission.SEND_SMS,
                "Sending SMS message");
        //默认信息应用
        if (!persistMessageForNonDefaultSmsApp) {
            // Only allow carrier app or carrier ims to skip auto message persistence.
            enforcePrivilegedAppPermissions();
        }
        
        if (mAppOps.noteOp(AppOpsManager.OP_SEND_SMS, Binder.getCallingUid(),
                callingPackage) != AppOpsManager.MODE_ALLOWED) {
            return;
        }

        destAddr = filterDestAddress(destAddr);

        if (parts.size() > 1 && parts.size() < 10 && !SmsMessage.hasEmsSupport()) {
            for (int i = 0; i < parts.size(); i++) { //每个part发送一次
                // If EMS is not supported, we have to break down EMS into single segment SMS
                // and add page info " x/y".
                String singlePart = parts.get(i);
                if (SmsMessage.shouldAppendPageNumberAsPrefix()) {
                    singlePart = String.valueOf(i + 1) + '/' + parts.size() + ' ' + singlePart;
                } else {
                    singlePart = singlePart.concat(' ' + String.valueOf(i + 1) + '/' + parts.size());
                }

                PendingIntent singleSentIntent = null;
                if (sentIntents != null && sentIntents.size() > i) {
                    singleSentIntent = sentIntents.get(i);
                }

                PendingIntent singleDeliveryIntent = null;
                if (deliveryIntents != null && deliveryIntents.size() > i) {
                    singleDeliveryIntent = deliveryIntents.get(i);
                }

                mDispatcher.sendText(destAddr, scAddr, singlePart,
                        singleSentIntent, singleDeliveryIntent,
                        null/*messageUri*/, callingPackage,
                        persistMessageForNonDefaultSmsApp);
            }
            return;
        }

        mDispatcher.sendMultipartText(destAddr, scAddr, (ArrayList<String>) parts,
                (ArrayList<PendingIntent>) sentIntents, (ArrayList<PendingIntent>) deliveryIntents,
                null/*messageUri*/, callingPackage, persistMessageForNonDefaultSmsApp);
}

3.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()) { //CdmaSMSDispatcher
            mCdmaDispatcher.sendText(destAddr, scAddr,
                    text, sentIntent, deliveryIntent, messageUri, callingPkg, persistMessage);
        } else { //GsmSMSDispatcher
            mGsmDispatcher.sendText(destAddr, scAddr,
                    text, sentIntent, deliveryIntent, messageUri, callingPkg, persistMessage);
        }
    }

相关文章

  • 发送委托信息

  • 发送长信息

    1.sendMultipartTextForSubscriber frameworks\opt\telephony...

  • 2017-11-02

    爱,或许来日方长 我不知该如何按下发送键 正如我不知何时才能按下发送键 屏幕上一条又一条的信息...

  • 深夜书房193:单向沟通与双向沟通

    单向沟通是指信息发送者发送信息,接收者接收信息。在整个过程中,只有发送者向接收者发出信息,而无接收者向发送者反馈信...

  • 小程序websocket遇到的几个小问题

    1. websocket 发送信息问题 在发送信息给服务器时,网上好多代码都将要发送的信息用 JSON.strin...

  • webscoket

    注意断开重连,每次发送信息初始化心跳,异步发送信息,一分钟内重连,超时不连,发送信息判断是否打开并进行一步发送,心...

  • 即时通讯:环信--消息发送与接收---3

    接收好友发送的聊天信息 展示消息 发送消息

  • NSLog 小结

    NSLog 的主要作用: 大意为:NSLog 会向 ASL 发送日志信息,同时向 Terminal 发送日志信息,...

  • 单向沟通到双向沟通式写作

    单号沟通,是指信息发送者发送信息,接收者接收信息。在整个过程中,只有发送者向接收者发出信息,而无接收者向送者反馈信...

  • 没有发送的信息

    私が彼と最初に出会ったのは会社の懇談会でした。 我和他最初相识在公司的畅谈会上。 ふとしたことから一緒に遊ぶように...

网友评论

      本文标题:发送长信息

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