繁体   English   中英

在 android 4.4 及更高版本的服务中使用 Smsmanager 发送短信

[英]sending sms using Smsmanager in a service for android 4.4 and above

我在一个在前台显示的服务中工作,我需要发送短信我在服务类中使用以下代码

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, "text", null, null);

我已经获得了以下权限 android:name="android.permission.SEND_SMS" 但它不起作用没有消息被发送

宣布:

public static final int PERMISSION_CODE_SEND_SMS  = 123;  

检查是否授予权限:

if (checkSelfPermission(android.Manifest.permission.SEND_SMS)
        != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{android.Manifest.permission.SEND_SMS},
            PERMISSION_CODE_SEND_SMS);

    return;
}

现在处理响应:

@Override
public void onRequestPermissionsResult(int requestCode,
    String permissions[], int[] grantResults) {
switch (requestCode) {
    case  PERMISSION_CODE_SEND_SMS: {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            // permission was granted send SMS now

        } else {

            // permission denied ask again
        }
        return;
    }


  }
}

在主要活动中检查权限

   private void checkForSmsPermission() {
    if (ActivityCompat.checkSelfPermission(this,
            Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.SEND_SMS},
                MY_PERMISSIONS_REQUEST_SEND_SMS);
    } else {
        // Permission already granted. Enable the SMS button.
       permission=1;
    }
}


        @Override
     public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    // For the requestCode, check if permission was granted or not.
         switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_SEND_SMS: {
            if (permissions[0].equalsIgnoreCase(Manifest.permission.SEND_SMS)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission was granted. Enable sms button.
                permission = 1;
            } else {
                // Permission denied.
                permission = 0;
                // Disable the sms button.

            }
         }
        }
      } 

并通过意图将权限详细信息作为权限变量(int)发送到服务类

       checkForSmsPermission();
       final Intent intent = new Intent(this, Chat.class);
       intent.putExtra("permission",permission);
       ContextCompat.startForegroundService(this, intent);

在服务类中 chked 权限并发送消息(当发送按钮被点击时)

                if (permission==1) {
                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;
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM