Java Android Studio短信发送

Java Android Studio短信发送,java,android,sms,Java,Android,Sms,我发短信有问题 所以我做了一个与这里完全相同的函数: 它工作得很好,但在发送了3条短信后就停止了工作。没有哪怕是祝酒都是无效的。同样的情况也发生在其他应用程序中,这也起到了作用 已启用从该应用发送短信的权限 我从主手机应用程序发送的短信工作正常 似乎它刚刚停止工作,为什么以及如何修复它 最相关的代码: protected void sendSMSMessage() { phoneNo = txtphoneNo.getText().toString(); messag

我发短信有问题

所以我做了一个与这里完全相同的函数:

它工作得很好,但在发送了3条短信后就停止了工作。没有哪怕是祝酒都是无效的。同样的情况也发生在其他应用程序中,这也起到了作用

已启用从该应用发送短信的权限

我从主手机应用程序发送的短信工作正常

似乎它刚刚停止工作,为什么以及如何修复它

最相关的代码:

   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,因为该应用程序已被授予这样做的权限。

我认为没有人会进入该教程查看该代码。您应该在问题中加入代码的相关部分。当你说“甚至没有祝酒说它不工作”时,你的意思是没有抛出异常吗?事实上,代码并不重要,因为它工作了,所以我认为它没有问题,但我会添加它。没错,没有异常,比如函数没有被调用。并非总是必要的,但我提到这是一个好习惯。欢迎您,如果我的回答解决了您的问题,您可以接受:)