2013-05-13 15 views
6

Voglio inviare un MMS a livello di codice che ho usato il seguente codice per essoInviare MMS a livello di codice

Intent sendIntent1 = new Intent(Intent.ACTION_SEND); 
    try { 

     sendIntent1.setType("text/x-vcard"); 
     sendIntent1.putExtra("address","0475223091"); 
     sendIntent1.putExtra("sms_body","hello.."); 
     sendIntent1.putExtra(Intent.EXTRA_STREAM, 
       Uri.parse(vcfFile.toURL().toString())); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    startActivity(sendIntent1); 

Il problema è che il regista alla pagina di composizione del messaggio e richiede inviare manualmente l'SMS e io non voglio così, senza alcuna notifica che dovrebbe inviare Come posso farlo ??

Qualcuno per favore mi condividere la risposta

risposta

9

Ho finalmente trovato una soluzione che funziona al 100%. Si prega di fare riferimento al progetto github https://github.com/klinker41/android-smsmms. (Chiunque lo trovi utile, si prega di donare all'autore http://forum.xda-developers.com/showthread.php?t=2222703).

Avviso, che le impostazioni obbligatorie sono solo

Settings sendSettings = new Settings(); 

sendSettings.setMmsc(mmsc); 
sendSettings.setProxy(proxy); 
sendSettings.setPort(port); 

è possibile ottenere qualcosa di simile (che si trova a Set APN programmatically on Android - answear per vincent091):

Cursor cursor = null; 
if (Utils.hasICS()){ 
    cursor =SqliteWrapper.query(activity, activity.getContentResolver(), 
      Uri.withAppendedPath(Carriers.CONTENT_URI, "current"), APN_PROJECTION, null, null, null); 
} else { 
    cursor = activity.getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), 
     null, null, null, null); 
} 

cursor.moveToLast(); 
String type = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.TYPE)); 
String mmsc = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSC)); 
String proxy = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSPROXY)); 
String port = cursor.getString(cursor.getColumnIndex(Telephony.Carriers.MMSPORT)); 
+0

ottengo questo java.lang.IllegalArgumentException: URI del messaggio nullo. Potete essere d'aiuto? – user3530687

-1

In questo modo è possibile MMS direttamente, Dando il cellulare No e Subject.And allegare l'immagine.

Uri uri = Uri.parse("file://"+Environment.getExternalStorageDirectory()+"/test.png"); 
     Intent i = new Intent(Intent.ACTION_SEND); 
     i.putExtra("address","1234567890"); 
     i.putExtra("sms_body","This is the text mms"); 
     i.putExtra(Intent.EXTRA_STREAM,"file:/"+uri); 
     i.setType("image/png"); 
     startActivity(i); 
2

MMS è una richiesta basata su HTTP in Android. È necessario disporre di dati mobili per inviare un MMS. Non ci sono API esposte da Android per inviare un MMS, in quanto hanno API per SMS. Se vuoi che la tua applicazione invii l'MMS dovrai scrivere tutto. Si prega di fare riferimento al codice AOSP. https://github.com/android/platform_packages_apps_mms OPPURE è possibile semplicemente creare l'intento e quindi avviare l'app di messaggistica nativa.