2

送信されたデータベースに MMS を挿入しようとしていますが、残念ながら、ネイティブの Android アプリケーションで表示できませんでした。

私の挿入コード:

ContentValues values = new ContentValues();
values.put("thread_id", thread_id);
values.put("date", time);
values.put("read", true); //read status
values.put("sub", text); //mms subject
values.put("msg_box", 2); //message box. in this case outbox

Uri mmsUri = context.getContentResolver().
insert(Uri.parse("content://mms"), values);
Log.v("MMSProjectActivity", "Message saved at: " + mmsUri);

ContentValues mmsPartValue = new ContentValues();
mmsPartValue.put("ct", "image/jpeg"); //mime; for example image/jpeg
Uri picUri = picUris.get(0);
String [] fileNameSplit = picUri.toString().split("/");
String fileName = fileNameSplit[fileNameSplit.length-1] + ".jpg";

String messageId = mmsUri.getLastPathSegment().trim(); //id of MMS at content://mms
Uri partUri = Uri.parse("content://mms/" + messageId + "/part");

Uri mmsPartUri = context.getContentResolver().insert(partUri, mmsPartValue);
OutputStream os;
InputStream is;
try
{
    os = context.getContentResolver().openOutputStream(mmsPartUri);
is = context.getContentResolver().openInputStream(picUris.get(0));
byte[] buffer = new byte[256];
for (int len = 0; (len = is.read(buffer)) != -1; ) {
    os.write(buffer, 0, len);
}
} catch (FileNotFoundException e)
{
Log.v("MMSProjectActivity", "MMS not saved FileNotFoundException");
e.printStackTrace();
} catch (IOException e)
{
Log.v("MMSProjectActivity", "MMS not saved IOException");
    e.printStackTrace();
}

Log.v("MMSProjectActivity", "MMS part value saved at: " + mmsPartUri);

誰かが私が間違っていることを知っていますか?

4

1 に答える 1

0

必要なのはこのクラスのソース コードにあると思います。一般的に、彼らがGoogleでそれを行う方法を見てください..具体的には、この方法を見てください

    private static Uri createDraftMmsMessage(PduPersister persister, SendReq sendReq,
        SlideshowModel slideshow) {
    try {
        PduBody pb = slideshow.toPduBody();
        sendReq.setBody(pb);
        Uri res = persister.persist(sendReq, Mms.Draft.CONTENT_URI);
        slideshow.sync(pb);
        return res;
    } catch (MmsException e) {
        return null;
    }
}

下書きを作成した後 (ステップ 1)、下書きを送信済みに更新します。他のメソッドを呼び出すことによって

 private static void updateDraftMmsMessage(Uri uri, PduPersister persister,
        SlideshowModel slideshow, SendReq sendReq) {
    if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
        LogTag.debug("updateDraftMmsMessage uri=%s", uri);
    }
    if (uri == null) {
        Log.e(TAG, "updateDraftMmsMessage null uri");
        return;
    }
    persister.updateHeaders(uri, sendReq);
    final PduBody pb = slideshow.toPduBody();

    try {
        persister.updateParts(uri, pb);
    } catch (MmsException e) {
        Log.e(TAG, "updateDraftMmsMessage: cannot update message " + uri);
    }

    slideshow.sync(pb);
}

ソースでビルドしていないため、アプリからこのコードを実行できないことはわかっています。正しくは、Google コードが保存内容を処理する必要があります)

いずれにしても、このクラスで行うことに従って、プロバイダーに mms メッセージを保存できるはずです。

乾杯...

そしてあなたの進歩を投稿してください...

于 2012-07-26T23:16:32.463 に答える