2011-05-23 10 views
24

Estoy trabajando en una aplicación que necesita para poder guardar/crear un nuevo MMS en la bandeja de entrada o en las carpetas de Enviado, pero no puedo entender el camino.Guardar/Crear MMS en la bandeja de entrada de Android

He probado el siguiente código pero me dio excepción:

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); 

y la excepción es:

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: Excepción eliminado mediante la eliminación de la línea: values.put("body","body 3") Pero lo que pueda' t ver cualquier mms en los mensajes.

+1

Excepción Eliminada eliminando la línea: values.put ("body", "body 3"); Pero no puedo ver ningún mensaje de mms. y qué hacer para insertar cualquier imagen o video ??? – Farhan

+0

Para enviar MMS por intención puede usar el siguiente enlace: http://androiddevcentral.com/source-code/137/send-an-MMS-via-Intents –

+0

Bueno, gracias Kartik pero quiero guardar/crear en mi bandeja de entrada o enviada. @ Todos, muchachos vamos, ni una sola respuesta .. :( – Farhan

Respuesta

5

Estaba teniendo el mismo problema. Sin embargo, creé y restauré exitosamente un MMS. Básicamente es una manipulación inversa de la base de datos.Espero que puedas obtener un MMS de la base de datos, ¿verdad? Solo necesita devolver los valores apropiados en las tablas de la base de datos. Puede obtener información sobre las tablas de la base de datos en mmssms.db. Una vez que comprenda el mmssms.db, es muy fácil insertar un MMS.

+0

puede mencionar los fragmentos de código, será fácil ... –

-6

primero cuando crea una pantalla que desea usar como pantalla mms. luego después de completar para hacerlo probar con el código para enviar ese mms a otra persona a la que desea. aquí primero declaras un botón btn_email en tu proyecto.

btn_email = (Botón) findViewById (R.id.btn_email);

luego escriba onclickevent en este botón que podrá ayudar a enviar el mms a otra persona.

enviar código mms:

btn_email.setOnClickListener (nueva View.OnClickListener() { @ Override public void onClick (Ver v) {// TODO automático generado por el método de talón de System.out. println ("el botón de correo electrónico está simplemente pulsa ..");.

    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:")); 
       } 

      }); 

este es el código que se envía el MMS a otra persona formar su camino sdcard este código utilizando el código de la intención es la Se usará la pantalla de envío de correo electrónico predeterminado de Android.

de esta manera usted puede enviar el mms a otra persona.

ahora para salvar las partículas que el MMS que usted tiene que enviar a otra persona, a medida que desarrolle esa pantalla que ha creado que acaba de capturar toda esa pantalla ... y guardar en la tarjeta SD como ..

por ejemplo, :

btn_save = (Botón) 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();  
    } 

    }); 

protegida saveImageToSD void() {// generada automáticamente TODO método stub

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(); 
    }  

} 

este código anterior salvar la de pantalla que tiene enviar a continuación, simplemente basta con acceder o ir a buscar esa imagen desde su ruta de acceso específica sdcard

+0

Creo que no entendiste la pregunta exactamente ... Quiero crear un mms en la bandeja de entrada , debería ser como: ejecutar un código, después de eso se crea una nueva entrada en la carpeta de mensajería predeterminada con Inbox/Enviado ... – Farhan

2

El cuerpo del MMS se almacena en content://mms/part/. Consulte this code para saber cómo leer de él, pero recuerde que todo esto no está documentado, no es compatible y es probable que cambie sin previo aviso.

+0

sí, tienes razón. ¿Y si creas un nuevo mms en la carpeta de la bandeja de entrada? – Farhan

Cuestiones relacionadas