首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android上,彩信一直在被接收

在Android上,彩信一直在被接收
EN

Stack Overflow用户
提问于 2017-09-12 12:11:41
回答 1查看 132关注 0票数 0

我正在尝试创建一个应用程序,将处理短信和彩信功能,并作为默认的应用程序。

为了发送彩信,我使用了klinker的https://github.com/klinker41/android-smsmms接口

我使用内容提供商将发送的彩信存储到手机(创建虚拟SMS,创建MMS及其MMS部分,最后删除虚拟SMS)

当我通过广播服务接收彩信并将彩信存储在收件箱时,我应该向运营商发回一些东西吗?

因为电话在一两天后再次接收相同的MMS。

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 07:34:21

我已经删除了我以前的答案,如果你仍然担心,我可能会给你一些更多的信息。

我发现我遇到了一个非常类似的问题,一些手机,但不是所有的手机都给我发彩信。好的,当我收到彩信的时候,有些东西你可以发回给给你发短信的手机。

你发回的东西叫做an:"AcknowledgeInd“。AcknowledgeInd是一个扩展了"GenericPdu“的公共类。这个AcknowledgeInd可以在线找到,也可以在Klinker库中找到。

如果你感兴趣的话,网上还有一些非常枯燥乏味的官方内容,关于AcknowledgeInd到底是什么,还有ReadRecInd和其他所有的东西。

您需要构建此AcknowledgeInd,并向向您的设备发送此消息的人发送回一条彩信。

构建Ack Ind:

代码语言:javascript
复制
        ack_ind = new AcknowledgeInd(mms_version, pdu_trans_ID.getBytes());

        return new PduComposer(application_context, ack_ind).make();

PduComposer.make()返回一个byte[],然后用它来发送彩信。

代码语言:javascript
复制
    /*"mms_send_file" is created here and used only inside of sendMmsViaCarrier();
     * It is then deleted inside handleSmsMmsSent() after the Mms has been sent whether
     *   successful or not*/
    final String mms_file_name = "send." + String.valueOf(Math.abs(new Random().nextLong())) + ".dat";
    File mms_follow_up_file = new File(application_context.getCacheDir(), mms_file_name);

将byte[] FileOutputStream到"mms_follow_up_file“。

构建要用作sms_manager.sendMultimediaMessage()方法中的参数的Uri。

代码语言:javascript
复制
    Uri content_uri = (new Uri.Builder())
            //.authority("com.example.android.apis.os.MmsFileProvider")
            //.authority(getBaseContext().getPackageName() + ".MmsFileProvider")
            .authority(application_context.getPackageName() + ".MmsFileProvider")
            .path(mms_file_name)
            .scheme(ContentResolver.SCHEME_CONTENT)
            //.scheme(ContentResolver.SCHEME_FILE)  
            .build();

然后调用Android方法发送:

代码语言:javascript
复制
    sms_manager.sendMultimediaMessage(application_context, content_uri, null, null, pending_intent_mms_follow_up);

备注:

对于这些彩信内容,总是使用"ApplicationContext“。你将需要“事务ID”,它是NotificationInd的一部分,它是安卓从你的清单接收器接收广播时检索并提供给你的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46167807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档