2017-03-20 5 views
-1

Ich habe versucht, SMS mit Smsmanage zu senden. Problem ist die Anwendung senden SMS nur nach dem ersten Mal Benutzer nach der Erlaubnis, SMS zu senden. nach der erstmaligen Anwendung fragt nicht nach Erlaubnis (weil der Benutzer bereits die Erlaubnis ersten Mal gab) und SMS nicht senden entwederSenden von SMS in Android (Marshmallow)

private static final int MY_PERMISSIONS_REQUEST_SEND_SMS = 1; 

public void requestpermisson(){ 
     if (ContextCompat.checkSelfPermission(this, 
       Manifest.permission.SEND_SMS) 
       != PackageManager.PERMISSION_GRANTED) { 
      if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
        Manifest.permission.SEND_SMS)) { 
      } else { 
       ActivityCompat.requestPermissions(this, 
         new String[]{Manifest.permission.SEND_SMS}, 
         MY_PERMISSIONS_REQUEST_SEND_SMS); 
      } 
     } 
    } 
    @Override 
    public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_SEND_SMS: { 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        SmsManager smsManager = SmsManager.getDefault(); 
        smsManager.sendTextMessage(phonenumber, null,smsbody, null, null); 
        Toast.makeText(getApplicationContext(), "SMS sent.", 
          Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(getApplicationContext(), 
          "SMS faild, please try again.", Toast.LENGTH_LONG).show(); 
        return; 
       } 
      } 
+1

Duplikat von http://stackoverflow.com/questions/42156615/not-sending-message/42156702 –

Antwort

0

Sie sind nicht der Fall Handhabung, wenn die Erlaubnis erteilt wird. Setzen Sie einen anderen Block in requestpermisson() Methode. Fügen Sie den Code zum Senden von SMS in diesem anderen Block hinzu

public void requestpermisson(){ 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.SEND_SMS) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.SEND_SMS)) { 
     } else { 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.SEND_SMS}, 
        MY_PERMISSIONS_REQUEST_SEND_SMS); 
     } 
    }else{   //already has permission granted 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(phonenumber, null,smsbody, null, null); 
      Toast.makeText(getApplicationContext(), "SMS sent.", 
         Toast.LENGTH_LONG).show(); 

    } 
} 
0

Nehmen Sie einfach die folgenden Änderungen an Ihrem Code vor. Sie haben den Fall nicht behandelt, in dem die Berechtigung bereits erteilt wurde.

if (ContextCompat.checkSelfPermission(this, 
        Manifest.permission.SEND_SMS) 
        != PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
         Manifest.permission.SEND_SMS)) { 
       } else { 
     // permission is already granted 
        ActivityCompat.requestPermissions(this, 
          new String[]{Manifest.permission.SEND_SMS}, 
          MY_PERMISSIONS_REQUEST_SEND_SMS); 
       } 
      } else { 
     SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(phonenumber, null,smsbody, null, null); 
       Toast.makeText(getApplicationContext(), "SMS sent.", 
         Toast.LENGTH_LONG).show(); 
}