2017-02-10 271 views
-1

嗨我使用此代碼發送任何號碼的短信,但它是第一次工作,並沒有下一次。任何修復? MY_PERMISSION_REQUEST_SEND_SMS中有問題嗎?有沒有其他簡短的方法發送短信?不發送消息

public class MainActivity extends AppCompatActivity { 
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ; 
String phonenumber; 
EditText number; 
String message; 
Button btn; 
EditText txt; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    btn = (Button) findViewById(R.id.send); 
    txt = (EditText) findViewById(R.id.message); 
    number = (EditText) findViewById(R.id.Number); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      SendSms(); 

     } 

    }); 
} 

protected void SendSms() { 
    phonenumber=number.getText().toString(); 
    message= txt.getText().toString(); 
    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, message, 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; 
      } 
     } 
    } 

} 
} 

回答

0

你不具備條件時,你已經擁有的訪問發送短信的權限

否則將用於外,如果和執行你發送短信代碼

+0

它真的幫助。謝謝 –

0

這是因爲你錯過了來電smsManager發送短信,如果允許授予
做出更好的方法,

private void smsSend(){ 
SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(phonenumber, null, message, null, 
    null); 
      Toast.makeText(getApplicationContext(), "SMS sent.", 
        Toast.LENGTH_LONG).show(); 
} 

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{ 
    smsSend(); //call method if already granted 
} 

,並呼籲燙髮後,這種方法ission授予也,

@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)  
      { 
       smsSend(); //call method after permission grant 
      } else { 
       Toast.makeText(getApplicationContext(), 
        "SMS faild, please try again.", 
    Toast.LENGTH_LONG).show(); 
       return; 
      } 
     } 
    } 

}