Java Android Studio短信发送
我发短信有问题 所以我做了一个与这里完全相同的函数: 它工作得很好,但在发送了3条短信后就停止了工作。没有哪怕是祝酒都是无效的。同样的情况也发生在其他应用程序中,这也起到了作用 已启用从该应用发送短信的权限 我从主手机应用程序发送的短信工作正常 似乎它刚刚停止工作,为什么以及如何修复它 最相关的代码:Java Android Studio短信发送,java,android,sms,Java,Android,Sms,我发短信有问题 所以我做了一个与这里完全相同的函数: 它工作得很好,但在发送了3条短信后就停止了工作。没有哪怕是祝酒都是无效的。同样的情况也发生在其他应用程序中,这也起到了作用 已启用从该应用发送短信的权限 我从主手机应用程序发送的短信工作正常 似乎它刚刚停止工作,为什么以及如何修复它 最相关的代码: protected void sendSMSMessage() { phoneNo = txtphoneNo.getText().toString(); messag
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;
}
}
}
}
以下是我认为您的代码存在的问题。一旦权限被禁用,它将提示“允许此应用发送sms权限”对话框,当用户响应“允许”时,sms发送将启动。现在的问题是,当应用程序已经被允许发送短信时,导致发送短信的权限对话框将不再被调用,因此onPermissionResult方法将不再被调用,这意味着短信发送将不再启动。这是基于您提供的当前代码片段。希望这能把事情弄清楚 编辑: 你应该把
else
语句放在你的
if(ContextCompat.checkSelfPermission),
清单。权限。发送(短信)
!=PackageManager.权限(已授予){
}
编码并呼叫发送sms,因为该应用程序已被授予这样做的权限。我认为没有人会进入该教程查看该代码。您应该在问题中加入代码的相关部分。当你说“甚至没有祝酒说它不工作”时,你的意思是没有抛出异常吗?事实上,代码并不重要,因为它工作了,所以我认为它没有问题,但我会添加它。没错,没有异常,比如函数没有被调用。并非总是必要的,但我提到这是一个好习惯。欢迎您,如果我的回答解决了您的问题,您可以接受:)