2017-02-07 2 views
-1

das ist mein Problem. Ich muss eine App schreiben, die eine SMS zu einer bestimmten Zeit sendet. In diesem Moment kann der Benutzer nicht am Telefon sein.Problem mit SMS-Berechtigungen

Alle Beispiele, die ich über SMS-Berechtigungen gelesen und ausprobiert habe, bewirken, dass der Benutzer über das Popup-Fenster eine Berechtigung erhält (was besagt, dass der Vorgang möglicherweise Kosten verursacht). Wie bereits erwähnt, kann der Benutzer nicht mit dem Telefon verbunden sein, daher kann die SMS ohne Benutzerautorisierung nicht zum gewünschten Zeitpunkt gesendet werden.

Gibt es eine Möglichkeit, die Autorisierung vorher zu erhalten und zu vermeiden, im Sendezeitpunkt erneut zu fragen?

Die Erlaubnis im Manifest erklärt:

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

Die SMS-Sende ist

SmsManager smsMgr = SmsManager.getDefault(); 
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0); 
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0); 
smsMgr.sendTextMessage(Number, null, "txt", sentPI, deliveredPI); 

Vielen Dank an alle

Antwort

0

Sie benötigen 6+ für android Erlaubnis zur Laufzeit zu erhalten. Tun Sie dies

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     int permissionCheck = ContextCompat.checkSelfPermission(RegisterActivity.this, Manifest.permission.SEND_SM); 
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
         ActivityCompat.requestPermissions(RegisterActivity.this, new String[]{Manifest.permission.SEND_SM}, 1); 
        } else { 
         sendSMS(); 
        } 
    } 
    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { 
     switch (requestCode) { 
     case 1: { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       sendSMS(); 
      } else { 
       finish(); 
      } 
     } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
}