2017-02-07 6 views
-1

これは私の問題です。 特定の時刻にSMSを送信するアプリを作成する必要があります。その瞬間、ユーザーは電話から離れることができます。SMS権限の問題

私がSMSのアクセス許可について読んで試したすべての例は、ポップアップを使ってユーザーに許可を求める効果があります(これは、操作が費用などを負担するかもしれないと言います)。前述のように、ユーザは電話から離れている可能性があるので、ユーザの許可がなければ、SMSは所望の時刻に送信することができない。

送信する前に許可を取得して再送信を避ける方法はありますか?

マニフェストで宣言された権限:

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

SMSの送信は、あなたがアンドロイド6+ため、実行時に許可を得るために必要なすべての

答えて

0

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); 

おかげです。これを行う

@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); 
    } 
}