Mails, téléphone et SMS

1°) Téléphoner :

Dans le fichier manifest .xml ajout de la permission CALL_PHONE (extrait du manifest) :

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>      

<application        ....  

Ajouter le code :

 private void call(String num) {  
        try {  
          Intent callIntent = new Intent(Intent.ACTION_CALL); //-- ACTION_DIAL : Affiche n° //-- ACTION_CALL : numérote et effectue l'appel  
          callIntent.setData(Uri.parse("tel:"+num));  
          startActivity(callIntent);  
        } catch (ActivityNotFoundException e) {  
          Log.e("helloandroid dialing example", "Call failed", e);  
        }  
      }  

2°) Pour envoyer des SMS (version KitKat 4.4):

Placer les permissions dans le fichier  AndroidManifest.xml :

<uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission>
<uses-permission android:name="android.permission.READ_SMS">    </uses-permission>
<uses-permission android:name="android.permission.SEND_SMS">    </uses-permission>

Importer les pakages

import android.telephony.SmsManager;
import android.telephony.SmsMessage;

Ajouter le code :
 private void SendSms(String num) {  
        String message = "Hello World!";  
        SmsManager smsManager = SmsManager.getDefault();  
        smsManager.sendTextMessage(num, null, message, null, null);  
      }  

Pour expédier un message de plus de 160 caractères :

Le SMS source est divisé en plusieurs SMS contenus dans un tableau. Cette opération est réalisée par l’instruction

smsManager.divideMessage("message à diviser...");

Ainsi le code source devient :
SmsManager smsManager = SmsManager.getDefault();
String msg="Message très très long à diviser, blabla....";
ArrayList<String> msgArray = smsManager.divideMessage(msg);
smsManager.sendMultipartTextMessage(phoneNumber, null, msgArray, null, null);

En résumé, envoi  de SMS :

Via Intent :

              Intent intent;  
              intent = new Intent(Intent.ACTION_VIEW);  
              intent.setType("vnd.android-dir/mms-sms");  
              intent.putExtra("address", phoneNo);  
              intent.putExtra("sms_body",msg );   
              startActivity(intent);  

Dans le cas d’un intent, pas de permission à demander…

Sans intent :

Inclure dans le fichier manifest la permission :

<uses-permission android:name= »android.permission.SEND_SMS » />

Placez les deux lignes de code dans votre activité :

SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage(phoneNo, null, msg, null, null);

Où phoneNo contiendra le n° de téléphone (String) et msg le texte à envoyer.

3°) Envoi de mails :

 Intent email = new Intent(Intent.ACTION_SEND);  
 email.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremail@yahoo.com"});             
 email.putExtra(Intent.EXTRA_SUBJECT, "subject");  
 email.putExtra(Intent.EXTRA_TEXT, "message");  
 email.setType("message/rfc822");  
 startActivity(Intent.createChooser(email, "Choose an Email client :"));  

Pour envoyer des mails sans intents avec JAVAMAIL:

Ajoutez dans le module app gradle :

 android {
     packagingOptions {
         pickFirst 'META-INF/LICENSE.txt' // picks the JavaMail license file
     }
 }

 repositories { 
     jcenter()
     maven {
         url "https://maven.java.net/content/groups/public/"
     }
 }

 dependencies {
     compile 'com.sun.mail:android-mail:1.5.5'
     compile 'com.sun.mail:android-activation:1.5.5'
 }

and do

 

Et envoyez le mail en utilisant un thread séparé :

if (isOnline()) {
                    haveWifiConnection();
                    haveMobileConnection();
                    Thread thread = new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                /////////////////
                                /////////////////
                                final String username = "silvain.cloulas@gmail.com";
                                final String password = "ChiccoBretzel@2017";

                                Properties props = new Properties();
                                props.put("mail.smtp.auth", "true");
                                props.put("mail.smtp.starttls.enable", "true");
                                props.put("mail.smtp.host", "smtp.gmail.com");
                                props.put("mail.smtp.port", "587");

                                Session session = Session.getInstance(props,
                                        new javax.mail.Authenticator() {
                                            protected PasswordAuthentication getPasswordAuthentication() {
                                                return new PasswordAuthentication(username, password);
                                            }
                                        });
                                try {
                                    Message message = new MimeMessage(session);
                                    message.setFrom(new InternetAddress("silvain.cloulasl@gmail.com"));
                                    message.setRecipients(Message.RecipientType.TO,
                                            InternetAddress.parse("andrologiciels@gmail.com"));
                                    message.setSubject("Testing Subject");
                                    message.setText("Dear Mail Crawler,"
                                            + "\n\n No spam to my email, please!");
/*
                                MimeBodyPart messageBodyPart = new MimeBodyPart();
                                Multipart multipart = new MimeMultipart();
                                messageBodyPart = new MimeBodyPart();
                                String file = "path of file to be attached";
                                String fileName = "attachmentName";
                                DataSource source = new FileDataSource(file);
                                messageBodyPart.setDataHandler(new DataHandler(source));
                                messageBodyPart.setFileName(fileName);
                                multipart.addBodyPart(messageBodyPart);
                                message.setContent(multipart);
*/
                                    Transport.send(message);
                                    Log.d("EnvoiMail", "Message envoyé");
                                } catch (MessagingException e) {
                                    throw new RuntimeException(e);
                                }

                                ///////////////////
                            } catch (Exception e) {
                                Log.e("EnvoiMail", e.getMessage());
                            }
                        }
                    });
                    thread.start();
                    ///////////
                } else {
                    Toast.makeText(MainActivity.this, "You are not online!!!!", Toast.LENGTH_LONG).show();
                }
////-- Test Network
public boolean isOnline() {
    ConnectivityManager cm =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

////--Test WIFI
private boolean haveWifiConnection() {
    boolean haveConnectedWifi = false;
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected()) {
                haveConnectedWifi = true;
                Toast.makeText(MainActivity.this, "WIFI", Toast.LENGTH_SHORT).show();
            }
    }

    return haveConnectedWifi;
}

////-- Test Mobile
private boolean haveMobileConnection() {
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected()) {
                haveConnectedMobile = true;
                Toast.makeText(MainActivity.this, "MOBILE", Toast.LENGTH_SHORT).show();
            }
    }
    return haveConnectedMobile;
}

Références :

https://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

https://stackoverflow.com/questions/25136025/sending-mail-in-android-without-intents-using-smtp

http://rainylinkb.blogspot.fr/2013/01/sending-email-from-android-in.html

http://www.codeproject.com/Articles/548416/Detecting-incoming-and-outgoing-phone-calls-on-And

http://www.compiletimeerror.com/2013/06/send-sms-in-android-example.html

http://www.discretelogix.com/blog/android-articles/send-sms-programmatically-in-android

http://javatechig.com/android/sending-sms-message-in-android#2-sending-sms-by-invoking-built-in-sms-application

http://www.mkyong.com/android/how-to-send-email-in-android/

 

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :