![](/img/trans.png)
[英]SEND SMS not working inside MyJavaScriptInterface - Android Studio
[英]Android Studio sms send
我在發送短信時遇到問題。
所以我做了一個和這里完全一樣的功能: https : //www.tutorialspoint.com/android/android_sending_sms.htm
它運行良好,但在發送 3 條短信后它停止工作。 甚至沒有 Toasts 它不起作用。 其他應用程序也會發生同樣的情況,這也有效。
已啟用從該應用程序發送短信的權限。
我來自主電話應用程序的短信工作正常。
似乎它剛剛停止工作,為什么以及如何解決它?
最相關的代碼:
protected void sendSMSMessage() {
phoneNo = txtphoneNo.getText().toString();
message = txtMessage.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(phoneNo, 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;
}
}
}
}
這就是我認為您的代碼的問題所在。 一旦權限被禁用,它會提示允許這個應用程序發送短信權限對話框,當用戶響應允許時,短信發送啟動。 現在的問題是,當應用程序已經被允許發送短信時,導致發送短信的權限對話框不再被調用,因此不再調用 onPermissionResult 方法,這意味着不再啟動發送短信。 這是基於您提供的當前代碼片段。 希望這能解決問題。
編輯:你應該把一個else
語句您
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { }
代碼並在那里調用發送短信,因為該應用程序已被授予這樣做的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.