2017-06-27 3 views
0

Échec de l'envoi des SMS au à l'aide du périphérique réel. Aucun message d'erreur J'ai autorisé la permission dans le fichier manifeste et importé les classes nécessaires, mais je n'arrive toujours pas à comprendre ce qui ne va pas. Toute aide serait grandement appréciée.Échec de l'envoi d'un SMS à l'aide d'un périphérique réel

sendMessage(contact,message); 

    private void sendMessage(String contact, String message) 
{ 
    SmsManager smsManager = SmsManager.getDefault(); 

    try { 
     smsManager.sendTextMessage(contact, null , message , null , null); 
     Toast.makeText(getApplicationContext(), "SMS Sent.", Toast.LENGTH_LONG).show(); 

    } catch (Exception e) 
    { 

     Toast.makeText(getApplicationContext(), "SMS failed to send.", Toast.LENGTH_LONG).show(); 

    } 

} 

Manifest

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

Répondre

0

Utilisez cette fonction ..

sendMySMS (personalPhone, message);

private void sendMySMS(String personalPhone, String messege) 
{ 
    SmsManager sms = SmsManager.getDefault(); 
    List<String> messages = sms.divideMessage(messege); 
    for (String msg : messages) 
    { 
     PendingIntent sentIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent("SMS_SENT"), 0); 
     PendingIntent deliveredIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent("SMS_DELIVERED"), 0); 
     sms.sendTextMessage(personalPhone, null, msg, sentIntent, deliveredIntent); 
    } 
} 

... Ajouter les autorisations

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

Si vous utilisez un vrai appareil avec Android 6.0 (API 23) ou plus, vous devez demander la permission à l'exécution.

La permission SEND_SMS est classée comme une autorisation dangereuse. Donc, avant d'exécuter la logique d'envoi de sms, vous devez demander à l'utilisateur s'il autorise l'envoi de messages.

Pour ce faire, devez d'abord ajouter dans votre activité

if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(
       thisActivity, 
       new String[]{Manifest.permission.SEND_SMS}, 
       MY_PERMISSIONS_REQUEST_SEND_SMS); 
    } 

Ensuite, vous vérifiera si l'utilisateur a accordé des autorisations en ajoutant cette méthode de remplacement

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_SEND_SMS: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // PERMISSION GRANTED 
       // Now you can send sms 
      } else { 
       // PERMISSION DENIED 
       // You should disable send sms feature 
      } 
      return; 
     } 
    } 
}