iniciar aplicación sms con un bash

Tengo una pregunta sobre un bash … Intento iniciar la aplicación de sms …

Intent intent = new Intent(Intent.ACTION_MAIN); intent.setType("vnd.android-dir/mms-sms"); int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP; intent.setFlags(flags); intent.setData(Uri.parse("content://sms/inbox")); context.startActivity(intent); 

entonces, pueden ver que puse demasiadas cosas en mi bash, pero eso es porque no sé cómo puedo hacer … Gracias

Para iniciar la actividad de sms todo lo que necesita es esto:

 Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.setData(Uri.parse("sms:")); 

Puede agregar extras para llenar su propio mensaje y cosas como esta

 sendIntent.putExtra("sms_body", x); 

entonces solo comienza la actividad con la intención.

 startActivity(sendIntent); 
 Intent smsIntent = new Intent(Intent.ACTION_VIEW); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.putExtra("address", "12125551212"); smsIntent.putExtra("sms_body","Body of Message"); startActivity(smsIntent); 

Si la versión de Android es Kitkat o superior, los usuarios pueden cambiar la aplicación de SMS predeterminada. Este método obtendrá la aplicación sms predeterminada e iniciará la aplicación sms predeterminada.

 private void sendSMS() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat { String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19 Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, "text"); if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose // any app that support this intent. { sendIntent.setPackage(defaultSmsPackageName); } startActivity(sendIntent); } else // For early versions, do what worked for you before. { Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.putExtra("address","phoneNumber"); smsIntent.putExtra("sms_body","message"); startActivity(smsIntent); } } 
 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); 

Eso es todo lo que necesitas.

Aquí está el código que abrirá la actividad de SMS previamente poblada con el número de teléfono al que se debe enviar el SMS. Esto funciona bien en el emulador y en el dispositivo .

 Intent smsIntent = new Intent(Intent.ACTION_SENDTO); smsIntent.addCategory(Intent.CATEGORY_DEFAULT); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.setData(Uri.parse("sms:" + phoneNumber); 

Si desea iniciar la actividad de composición de SMS de parte de su otra actividad y también debe pasar un número de teléfono y un texto SMS, utilice este código:

 Uri sms_uri = Uri.parse("smsto:+92xxxxxxxx"); Intent sms_intent = new Intent(Intent.ACTION_SENDTO, sms_uri); sms_intent.putExtra("sms_body", "Good Morning ! how r U ?"); startActivity(sms_intent); 

Nota: aquí sms_body y smsto: son claves para reconocer el texto y el teléfono no en la actividad de smsto: SMS, así que tenga cuidado aquí.

Utilizar

 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList"); 
 Intent eventIntentMessage =getPackageManager() .getLaunchIntentForPackage(Telephony.Sms.getDefaultSmsPackage(getApplicationContext)); startActivity(eventIntentMessage); 

Yo suelo:

 Intent sendIntent = new Intent(Intent.ACTION_MAIN); sendIntent.putExtra("sms_body", "text"); sendIntent.setType("vnd.android-dir/mms-sms"); startActivity(sendIntent); 

Puede abrir la aplicación sms predeterminada y pasar los detalles de la siguiente manera:
Nota: Si desea enviar a muchos números, separe cada número con “;” cuerda interior

 String mblNumVar = "9876543210;9123456789"; Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW); smsMsgAppVar.setData(Uri.parse("sms:" + mblNumVar)); smsMsgAppVar.putExtra("sms_body", "Hello Msg Tst Txt"); startActivity(smsMsgAppVar); 

| O | Usa esta función:

 void openSmsMsgAppFnc(String mblNumVar, String smsMsgVar) { Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW); smsMsgAppVar.setData(Uri.parse("sms:" + mblNumVar)); smsMsgAppVar.putExtra("sms_body", smsMsgVar); startActivity(smsMsgAppVar); } 
 try { Intent smsIntent = new Intent(Intent.ACTION_VIEW); smsIntent.setData(Uri.parse("smsto:" + Uri.encode(number))); smsIntent.putExtra("address", number); smsIntent.putExtra("sms_body", message); PackageManager pm = activity.getPackageManager(); List resInfo = pm.queryIntentActivities(smsIntent, 0); for (int i = 0; i < resInfo.size(); i++) { ResolveInfo ri = resInfo.get(i); String packageName = ri.activityInfo.packageName; if (packageName.contains("sms")) { //Log.d("TAG", packageName + " : " + ri.activityInfo.name); smsIntent.setComponent(new ComponentName(packageName, ri.activityInfo.name)); } } activity.startActivity(smsIntent); } catch (Exception e) { // Handle Error } 

La mejor manera de hacer esto.

 Intent sendIntent = new Intent(Intent.ACTION_SEND); //CHANGE YOUR MESSAGING ACTIVITY HERE IF REQUIRED sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity"); sendIntent.putExtra("sms_body",msgbody); sendIntent.putExtra("address",phonenumber); //FOR MMS sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mms.png")); sendIntent.setType("image/png"); startActivity(sendIntent); 

El mejor código que funciona con la aplicación de SMS predeterminada es.

 Uri SMS_URI = Uri.parse("smsto:+92324502****"); //Replace the phone number Intent sms = new Intent(Intent.ACTION_VIEW,SMS_URI); sms.putExtra("sms_body","This is test message"); //Replace the message witha a vairable startActivity(sms); 

en emulador este trabajo para mí

 Intent i = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("sms_body", remindingReason); startActivity(i); 

Intento de Sms:

 Intent intent = new Intent("android.intent.action.VIEW"); /** creates an sms uri */ Uri data = Uri.parse("sms:"); intent.setData(data); 

Componer SMS:

 Uri smsUri = Uri.parse("tel:" + to); Intent intent = new Intent(Intent.ACTION_VIEW, smsUri); intent.putExtra("address", to); intent.putExtra("sms_body", message); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); 

El siguiente código funciona en Android 6.0.
Se abrirá la actividad de búsqueda en la aplicación de mensajería predeterminada con las conversaciones relacionadas con la cadena específica provista.

 Intent smsIntent = new Intent(Intent.ACTION_MAIN); smsIntent.addCategory(Intent.CATEGORY_LAUNCHER); smsIntent.setClassName("com.android.mms", "com.android.mms.ui.SearchActivity"); smsIntent.putExtra("intent_extra_data_key", "string_to_search_for"); startActivity(smsIntent); 

Puede iniciar la actividad de búsqueda con un bash. Esto abrirá la actividad de búsqueda de la aplicación de mensajería predeterminada. Ahora, para mostrar una lista de conversaciones específicas en la actividad de búsqueda, puede proporcionar la cadena de búsqueda como cadena adicional con la clave como

“intent_extra_data_key”

como se muestra en el onCreate de esta clase

 String searchStringParameter = getIntent().getStringExtra(SearchManager.QUERY); if (searchStringParameter == null) { searchStringParameter = getIntent().getStringExtra("intent_extra_data_key" /*SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA*/); } final String searchString = searchStringParameter != null ? searchStringParameter.trim() : searchStringParameter; 

También puede pasar SENDER_ADDRESS del sms como una cadena adicional, que enumerará todas las conversaciones con esa dirección específica del remitente.

Ver com.android.mms.ui.SearchActivity para más información

También puedes verificar esta respuesta