J'ai une question à propos d'une intention ... J'essaie de lancer l'application 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);
alors, vous pouvez voir que j’ai mis trop de choses dans mes intentions, mais c’est parce que je ne sais pas comment je peux faire ... Merci
Pour lancer l'activité SMS, il vous suffit de:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
Vous pouvez ajouter des extras pour renseigner votre propre message, par exemple
sendIntent.putExtra("sms_body", x);
il suffit ensuite de démarrer l'activité avec l'intention.
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 Android est KitKat ou une version ultérieure, les utilisateurs peuvent modifier l'application SMS par défaut. Cette méthode permet d'obtenir l'application SMS par défaut et de démarrer l'application SMS par défaut.
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);
C'est tout ce dont vous avez besoin.
Si vous souhaitez lancer SMS Composer une activité d'une autre activité et vous devez également transmettre un numéro de téléphone et SMS texte, utilisez ce code:
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);
Note: ici le sms_body
et smsto:
est la clé pour reconnaître le texte et le numéro de téléphone à SMS composer une activité, soyez donc prudent ici.
Voici le code qui ouvrira l’activité SMS pré-renseignée avec le numéro de téléphone auquel le SMS doit être envoyé.). Cela fonctionne bien sur l’émulateur ainsi que sur le périphérique.
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);
Utilisation
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);
J'utilise:
Intent sendIntent = new Intent(Intent.ACTION_MAIN);
sendIntent.putExtra("sms_body", "text");
sendIntent.setType("vnd.Android-dir/mms-sms");
startActivity(sendIntent);
Vous pouvez ouvrir l'application SMS par défaut et transmettre les détails comme ci-dessous:
Remarque: Si vous souhaitez envoyer plusieurs numéros, séparez chaque nombre par ";" ficelle intérieure
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);
| Ou | Utilisez cette fonction:
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);
}
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);
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<ResolveInfo> 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
}
Le meilleur moyen de le faire.
Le meilleur code qui fonctionne avec Default SMS app est.
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);
Le code ci-dessous fonctionne sur Android 6.0.
Cela ouvrira l'activité de recherche dans l'application de messagerie par défaut avec les conversations liées à une chaîne spécifique fournie.
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);
Vous pouvez démarrer l'activité de recherche avec une intention. Cela ouvrira l'activité de recherche de l'application de messagerie par défaut. Maintenant, pour afficher une liste de conversations spécifiques dans l’activité de recherche, vous pouvez fournir la chaîne de recherche sous forme de chaîne supplémentaire avec la clé suivante:
"intent_extra_data_key"
comme le montre onCreate de cette classe
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;
Vous pouvez également transmettre le SENDER_ADDRESS du sms en tant que chaîne supplémentaire, qui répertoriera toutes les conversations avec cette adresse d'expéditeur spécifique.
Vérifiez com.Android.mms.ui.SearchActivity pour plus d'informations
Vous pouvez également vérifier cette réponse
Sms Intent:
Intent intent = new Intent("Android.intent.action.VIEW");
/** creates an sms uri */
Uri data = Uri.parse("sms:");
intent.setData(data);
sur émulateur ce travail pour moi
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);
Composer 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);
Dans kotlin cela peut être facilement implémenté comme suit:
/**
* If Android version is KitKat or above, users can change default sms application.
* This method will get default sms app and start default sms app.
*/
private fun openSMS() {
val message = "message here"
val phone = "255754......." //255 Tanzania code.
val uri = Uri.parse("smsto:+$phone")
val intent = Intent(Intent.ACTION_SENDTO, uri)
with(intent) {
putExtra("address", "+$phone")
putExtra("sms_body", message)
}
when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat -> {
//Getting the default sms app.
val defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(context)
// Can be null in case that there is no default, then the user would be able to choose
// any app that support this intent.
if (defaultSmsPackageName != null) intent.setPackage(defaultSmsPackageName)
startActivity(intent)
}
else -> startActivity(intent)
}
}
Ceci est la réponse modifiée de @mustafasevgi