如何将MMS pdu从onReveive保存到MMS数据库

时间:2019-02-08 03:50:05

标签: android

我有一个应用程序,它是Android上的默认消息传递应用程序。该应用程序适用于我的公司,并且只能通过“ UnknownSources”安装在公司拥有的设备上。作为默认的消息传递应用程序,我收到了所有文本消息,并将它们写入SMS / MMS数据库。由于我的应用程序是默认应用程序,因此它使其他消息传递应用程序只读。我可以向员工发送有关工作/交货的文本消息,他们可以查看它们并使用应用程序进行回复等。但是,如果我发送图像(例如项目图片),则将其作为MMS文本接收,我需要知道如何将其写入默认数据库,以便任何消息传递应用程序都可以查看它。

作为默认应用程序,我可以正常使用WAP_PUSH_DELIVER和SMS_DELIVER_ACTION。我可以轻松地将SMS_DELIVER_ACTION写入默认的SMS提供程序数据库,并且用户可以使用标准消息应用程序查看它们。

用户可以继续使用消息收发应用程序内置的电话来阅读它们。我遇到的问题是WAP_PUSH_RECEIVED。我可以获取发送电话的号码,这是我敬酒的全部信息。

byte[] mmsData = intent.getByteArrayExtra("data");
PduParser parser = new PduParser(mmsData);
GenericPdu pdu = parser.parse();
GlobalCode.msgInfo msg = new GlobalCode.msgInfo();
msg.OUT_From = pdu.getFrom().getString();

但是,现在我想将其写入Telephony.Mms.CONTENT_URI,以便其他消息收发应用程序的电话可以读取它。由于我的应用程序是默认应用程序,因此我是唯一可以编写该应用程序的应用程序。

那么,我如何轻松地将传入的MMS消息写入Telephony.Mms.CONTENT_URI,以便另一个应用程序可以查看它们?

谢谢

我已经进行了大量研究和谷歌搜索,并且有很多SMS示例,但是没有人显示mms示例。我所能找到的就是人们在哪里进行连接,然后调用后台服务以仅使用服务中的ToDo来处理它。我已经看过几篇文章,并在KitKat发布时对此进行了提及,但是所有这些都无法显示默认消息传递应用程序应如何处理GenericPdu并将其写入内部存储。短信就是这样

private boolean saveSms(Context context, String phoneNumber, String message, String readState, String time ) {
        boolean ret = false;
        try {
            ContentValues values = new ContentValues();
            values.put(Telephony.Sms.ADDRESS, phoneNumber);
            values.put(Telephony.Sms.BODY, message);
            values.put(Telephony.Sms.READ, readState); 
            values.put(Telephony.Sms.DATE, time);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                Uri uri =  null;
                //uri = Telephony.Sms.Sent.CONTENT_URI;
                uri = Telephony.Sms.Inbox.CONTENT_URI;

                if(context.getContentResolver().insert(uri, values)==null)
                   if (log.debuggingOn() || GlobalCode.info.DEBUG_MMS_Sent_from_Phone||Debug)
                        log.writeLogInfo("Error", "Could not insert sms");
            }
            else {
                /* folderName  could be inbox or sent */
                context.getContentResolver().insert(Uri.parse("content://sms/" + "inbox"), values);
            }

            ret = true;
        } catch (Exception ex) {
            ex.printStackTrace();
            ret = false;
        }
        return ret;
    }

我想要的只是一个简单的函数,它将mms写入数据库,因此任何消息传递应用程序都可以读取它。或指出正确的方向,我一直找不到简单的解决方案。谢谢。

0 个答案:

没有答案