Jusqu'à présent, j'utilise le code suivant pour envoyer SMS) vers un autre téléphone via mon application.
Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + srcNumber));
intent.putExtra( "sms_body", message );
startActivity(intent);
Cependant, cela ouvre l'application de messagerie native, plaçant ainsi l'activité de mon application en arrière-plan. Est-il possible d'envoyer le SMS directement sans que l'application de messagerie native s'ouvre? Si oui, comment?
Vous pouvez envoyer un message à partir de votre application via:
public void sendSMS(String phoneNo, String msg) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, msg, null, null);
Toast.makeText(getApplicationContext(), "Message Sent",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),ex.getMessage().toString(),
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
De plus, vous devez donner la permission SEND_SMS
Dans AndroidManifest.xml
Pour envoyer un message.
<uses-permission Android:name="Android.permission.SEND_SMS" />
public void sendLongSMS() {
String phoneNumber = "0123456789";
String message = "Hello World! Now we are going to demonstrate " +
"how to send a message with more than 160 characters from your Android application.";
SmsManager smsManager = SmsManager.getDefault();
ArrayList<String> parts = smsManager.divideMessage(message);
smsManager.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
}
et n'oubliez pas d'ajouter
<uses-permission Android:name="Android.permission.SEND_SMS"/>
Envoi de sms avec demande d'autorisation:
Ajouter dans le manifeste:
<uses-permission Android:name="Android.permission.SEND_SMS" />
Ajouter Java Fonction:
void sendSmsMsgFnc(String mblNumVar, String smsMsgVar)
{
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED)
{
try
{
SmsManager smsMgrVar = SmsManager.getDefault();
smsMgrVar.sendTextMessage(mblNumVar, null, smsMsgVar, null, null);
Toast.makeText(getApplicationContext(), "Message Sent",
Toast.LENGTH_LONG).show();
}
catch (Exception ErrVar)
{
Toast.makeText(getApplicationContext(),ErrVar.getMessage().toString(),
Toast.LENGTH_LONG).show();
ErrVar.printStackTrace();
}
}
else
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
requestPermissions(new String[]{Manifest.permission.SEND_SMS}, 10);
}
}
}
Oui, j'ai trouvé la réponse à ma propre question :)
Utilisez le code suivant pour le même:
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(srcNumber, null, message, null, null);
Cela nécessite que l’autorisation suivante soit déclarée sur le xml manifeste de Android.
<uses-permission Android:name="Android.permission.SEND_SMS"/>
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, sms, null, null);