Сохранить / создать MMS в папке «Входящие» Android

Я работаю над приложением, которое должно иметь возможность сохранять / создавать новое MMS в папке «Входящие» или «Отправленные», но я не могу найти способ.

] Я попробовал следующий код, но он дал мне исключение:

ContentValues values = new ContentValues();
values.put("address", "xxxxxxxxxxx");
values.put("body", "body 3");
values.put("read", "0");
getContentResolver().insert(Uri.parse("content://mms/inbox"), values);

И исключение:

ERROR/Database(118): Error inserting read=0 body=body 3 msg_box=1 date=1306153444 address=xxxxxxxxxxx
ERROR/Database(118): android.database.sqlite.SQLiteException: table pdu has no column named body: , while compiling: INSERT INTO pdu(read, body, msg_box, date, address) VALUES(?, ?, ?, ?, ?);
ERROR/Database(118):     at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
ERROR/Database(118):     at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
ERROR/Database(118):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
ERROR/Database(118):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
ERROR/Database(118):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36)
ERROR/Database(118):     at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
ERROR/Database(118):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)
ERROR/Database(118):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
ERROR/Database(118):     at com.android.providers.telephony.MmsProvider.insert(MmsProvider.java:347)
ERROR/Database(118):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:174)
ERROR/Database(118):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
ERROR/Database(118):     at android.os.Binder.execTransact(Binder.java:288)
ERROR/Database(118):     at dalvik.system.NativeStart.run(Native Method)
ERROR/MmsProvider(118): MmsProvider.insert: failed! read=0 body=body 3 msg_box=1 date=1306153444 address=xxxxxxxxxxx

UDPATE: Исключение удалено путем удаления строки: values.put ("body", "body 3" ) Но я не вижу никаких ммс в сообщениях.

24
задан Sathyajith Bhat 25 May 2011 в 12:24
поделиться

2 ответа

Тело MMS хранится в content://mms/part/. См. этот код , чтобы узнать, как читать из него, но помните, что все это недокументировано, не поддерживается и может быть изменено без уведомления.

2
ответ дан 29 November 2019 в 00:33
поделиться

сначала при создании одного экрана, который вы хотите использовать в качестве экрана ммс. затем, после того как вы завершили, чтобы сделать это, попробуйте это в коде, чтобы отправить это MMS другому человеку, которому вы хотите. здесь вы сначала объявляете одну кнопку btn_email в вашем проекте.

btn_email = (кнопка) findViewById (R.id.btn_email);

затем напишите на этой кнопке событие onclickevent, которое поможет отправить MMS другому человеку.

отправить код ммс:

btn_email.setOnClickListener (new View.OnClickListener () {@Override public void onClick (View v) {// TODO автоматически сгенерированный метод заглушки System.out.println ("the кнопка электронной почты просто нажата .. ");

                    Intent sendIntent = new Intent(Intent.ACTION_SEND);

                    //Mime type of the attachment (or) u can use sendIntent.setType("*/*")

                    sendIntent.setType("image/jpeg");

                    //Subject for the message or Email

                    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "My Picture");

                    //Full Path to the attachment

                    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://mnt/"+mUrl));

                    //Use a chooser to decide whether email or mms

                    startActivity(Intent.createChooser(sendIntent, "Email:"));
                }

            });

вот код, который отправит MMS другому лицу по пути к sdcard. этот код, использующий код намерения, является экраном отправки электронной почты по умолчанию для Android. используйте.

таким образом, вы можете отправить MMS другому человеку.

теперь, чтобы сохранить те частицы частиц, которые вы отправили этому другому человеку, как вы разрабатываете этот экран, который вы создали, вы просто захватываете весь этот экран ... и сохраняете в SD-карту как ..

например:

btn_save = (кнопка) findViewById (R.id.btn_save);

   btn_save.setOnClickListener(new OnClickListener()
   {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        System.out.println("the save button is just pressed..");

        saveImageToSD();
        Toast.makeText(Create_Screen_Birthday.this,"Image successfully saved",Toast.LENGTH_LONG).show();    
    }

   });

protected void saveImageToSD () {// TODO Автоматически сгенерированная заглушка метода

    System.out.println("NOW you are on the saveimage to sd card method called block..");

    try
    {
        //String fileName = "myBitmapImage2.png";   
        int  Current_Hour,Current_Minute,Current_Second;
        RelativeLayout settext_relative;

        settext_relative = (RelativeLayout)findViewById(R.id.settext_relative);



        final Calendar c = Calendar.getInstance();

        Current_Hour = c.get(Calendar.HOUR);
        Current_Minute = c.get(Calendar.MINUTE);
        Current_Second = c.get(Calendar.SECOND);


        System.out.println("the value of Current_Year = "+Current_Hour);
        System.out.println("the value of Current_Month = "+Current_Minute);
        System.out.println("the value of Current_Date = "+Current_Second);



        fileName = "Birthday_Card"+"_"+Current_Hour+"_"+Current_Minute+"_"+Current_Second+".png";
        String path = "/sdcard/E-card/Birthday_Cards/";

          newfileName = path + fileName;
         System.out.println("the value of newfilename = "+newfileName);


        System.out.println("The Filename on save card on sdcard = "+fileName);

        FileOutputStream outStream = null;
        File file = new File(path);
        file.mkdirs();

        File outputFile = new File(file, fileName);
        outputFile.createNewFile(); 

        outStream = new FileOutputStream(outputFile);

        BufferedOutputStream bos = new BufferedOutputStream(outStream);



         RL.setDrawingCacheEnabled(true);

     bitmap = Bitmap.createBitmap( RL.getDrawingCache());

        bitmap.compress(Bitmap.CompressFormat.PNG, 100,bos);

         RL.setDrawingCacheEnabled(false);

        bos.flush();
        bos.close();

        btn_preview.setVisibility(View.VISIBLE);

        btn_save.setVisibility(View.GONE);
    }

    catch(Exception ex)
    {
        ex.printStackTrace();
    }       

}

этот код, приведенный выше, сохранит тот экран, который вы отправили, тогда вы просто получите или получите это изображение из вашей конкретной карты SDK имя пути [1 114]

-6
ответ дан 29 November 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: