texto studio programado programacion para mensajes mensaje mandar interceptar enviar como aplicación aplicacion java android mms sendmessage

java - studio - Enviar MMS desde mi aplicación en Android



interceptar sms android (2)

Quiero enviar MMS desde mi aplicación a un número específico. He buscado y encontrado este código, pero no tengo idea si este código es lo que necesito o no. Mis preguntas son:

-puede alguien explicarme este código. Soy principiante en MMS.

-también, pensé que este código es permitir al usuario enviar MMS desde mi aplicación sin moverlo a la bandeja de entrada de Mensajería nativa (y esto es lo que quiero) ¿Tengo razón?

-también tengo un problema, no sé cómo puedo poner este código en mi proyecto.

esto es lo que encontré

MMS es solo una solicitud http-post. Debe realizar la solicitud utilizando la función de red adicional:

final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); final int result = connMgr.startUsingNetworkFeature( ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_MMS);

Si recuperas el resultado con el valor de Phone.APN_REQUEST_STARTED , debes esperar el estado adecuado. Registre BroadCastReciver y espere hasta que aparezca Phone.APN_ALREADY_ACTIVE :

final IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); context.registerReceiver(reciver, filter);

Si la conexión en segundo plano está lista, compile el contenido y realice la solicitud. Si quieres hacerlo usando el código interno de Android, usa esto:

final SendReq sendRequest = new SendReq(); final EncodedStringValue[] sub = EncodedStringValue.extract(subject); if (sub != null && sub.length > 0) { sendRequest.setSubject(sub[0]); } final EncodedStringValue[] phoneNumbers = EncodedStringValue.extract(recipient); if (phoneNumbers != null && phoneNumbers.length > 0) { sendRequest.addTo(phoneNumbers[0]); } final PduBody pduBody = new PduBody(); if (parts != null) { for (MMSPart part : parts) { final PduPart partPdu = new PduPart(); partPdu.setName(part.Name.getBytes()); partPdu.setContentType(part.MimeType.getBytes()); partPdu.setData(part.Data); pduBody.addPart(partPdu); } } sendRequest.setBody(pduBody); final PduComposer composer = new PduComposer(this.context, sendRequest); final byte[] bytesToSend = composer.make(); HttpUtils.httpConnection(context, 4444L, MMSCenterUrl, bytesToSendFromPDU, HttpUtils.HTTP_POST_METHOD, !TextUtils.isEmpty(MMSProxy), MMSProxy, port);

  • MMSCenterUrl: url de MMS-APNs,
  • MMSProxy: proxy de MMS-APNs,
  • puerto: puerto de MMS-APNs

Tenga en cuenta que algunas clases son de paquetes internos. Se requiere la descarga de Android Git. La solicitud debe hacerse con la url del código apn-space del usuario:

public class APNHelper { public class APN { public String MMSCenterUrl = ""; public String MMSPort = ""; public String MMSProxy = ""; } public APNHelper(final Context context) { this.context = context; } public List<APN> getMMSApns() { final Cursor apnCursor = this.context.getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), null, null, null, null); if ( apnCursor == null ) { return Collections.EMPTY_LIST; } else { final List<APN> results = new ArrayList<APN>(); while ( apnCursor.moveToNext() ) { final String type = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.TYPE)); if ( !TextUtils.isEmpty(type) && ( type.equalsIgnoreCase(Phone.APN_TYPE_ALL) || type.equalsIgnoreCase(Phone.APN_TYPE_MMS) ) ) { final String mmsc = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSC)); final String mmsProxy = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSPROXY)); final String port = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSPORT)); final APN apn = new APN(); apn.MMSCenterUrl = mmsc; apn.MMSProxy = mmsProxy; apn.MMSPort = port; results.add(apn); } } apnCursor.close(); return results; }

por favor, ayúdame


¿Por qué no usas las funciones del sistema android?

Por favor, eche un vistazo a

https://developer.android.com/guide/components/intents-common.html

public void composeMmsMessage(String message, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setData(Uri.parse("smsto:")); // This ensures only SMS apps respond intent.putExtra("sms_body", message); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }

Aclamaciones

Tom


Encontré un enlace en otro hilo a un proyecto github que funciona al 100% https://github.com/klinker41/android-smsmms

Tenga en cuenta, que los ajustes obligatorios son sólo

Settings sendSettings = new Settings(); sendSettings.setMmsc(mmsc); sendSettings.setProxy(proxy); sendSettings.setPort(port);

puede obtener algo como (que se encuentra en Set APN programáticamente en Android - responda por 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));