Résultat espéré :
Tout d'abord, création du projet intitulé "EnvoiSms" avec une activité qui porte le même nom.
Pour obtenir cette petite interface voici le code XML correspondant :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/numero" />
<EditText android:id="@+id/numero" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/message" />
<EditText android:id="@+id/message" android:layout_width="fill_parent"
android:layout_height="200sp" />
<Button android:id="@+id/envoyer" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/envoyer" />
</LinearLayout>
|
Si vous avez des erreurs c’est parce que les ressources String n'ont pas été créées Créez les ressources qu’il faut dans le fichier String.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="numero">Numero</string>
<string name="app_name">Envoie Sms</string>
<string name="message">Message</string>
<string name="envoyer">Envoyer</string>
</resources>
|
Mise en place du mécanisme d’envoi de SMS. Pour cela il faut utiliser un objet type SmsManager.
Voici le code Java (commenté) permettant d'obtenir le résultat escompté :
package com.example.envoisms2023;
import android.app.Activity; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//On récupère le bouton créer en XML grâce à son id puis les 2 EditText correspondant aux champs pour entrer le numéro et le message
Button btnEnvoi = (Button)findViewById(R.id.envoyer);
final EditText numero =(EditText)findViewById(R.id.numero);
final EditText message = (EditText)findViewById(R.id.message);
//On affecte un écouteur d'évènement au bouton
btnEnvoi.setOnClickListener(new OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
//On récupère ce qui a été entré dans les EditText String num = numero.getText().toString();
String msg = message.getText().toString();
//Si le numéro est supérieur à 4 caractères et que le message n'est pas vide on lance la procédure d'envoi if(num.length()>= 4 && msg.length() > 0){ //Grâce à l'objet de gestion de SMS (SmsManager) que l'on récupère grâce à la méthode static getDefault()
//On envoie le SMS avec la méthode sendTextMessage
SmsManager.getDefault().sendTextMessage(num, null, msg, null, null);
//On efface les deux EditText numero.setText(""); message.setText(""); }else{
//On affiche un message d'erreur dans un Toast
Toast.makeText(EnvoieSms.this, "Enter le numero et/ou le message", Toast.LENGTH_SHORT).show();
}
}
});
}
}
|
Voilà nous avons presque fini il nous reste juste à demander la permission d’envoyer des messages. Pour cela ouvrez le fichier AndroidManifest.xml et ajoutez cette ligne :
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission> |
Remarque :
Pour les smartphones sous Android 27 ou supérieur il faut ajouter les lignes suivantes :
// A ajouter dans la déclaration
private static final int PERMISSION_REQUEST_CODE = 1;
. . .
// A ajouter en 3ème ligne dans la méthode onCreate...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M)
{
if (checkSelfPermission(android.Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_DENIED)
{
Log.d("permission", "permission denied to SEND_SMS - requesting it");
String[] permissions = {android.Manifest.permission.SEND_SMS};
requestPermissions(permissions, PERMISSION_REQUEST_CODE);
}
}
. . .
Vous pouvez maintenant tester. Pour bien voir que ça marche nous allons utiliser deux émulateurs. Je suppose que vous en disposer déjà d’un , nous allons donc en créer un deuxième. Cliquez sur le menu Windows >>> Android SDK and AVD Manager. Ensuite cliquez sur New pour créer un nouvel émulateur, donnez lui le nom que vous voulez, cliquez sur Create AVD et sélectionnez ce nouvel émulateur puis cliquez sur Start. Il ne reste plus qu’a lancer votre projet avec l’un des émulateurs et à rentrer le numéro qui apparaît sous l'onglet "run". Voilà tout devrait marcher normalement !