Android 如何在不打开短信应用程序的情况下以编程方式发送短信

Android 如何在不打开短信应用程序的情况下以编程方式发送短信,android,Android,我是Android新手,在我的应用程序中,我想在不打开现有MessageApp的情况下向手机发送短信。为了实现这一点,我写了下面的代码,但我的手机没有收到任何消息 有什么问题 代码: 此外,我还在我的宣言文件中添加了以下权限 将禁用sendSMS()功能 //---sends an SMS message to another device--- private void sendSMS(String phoneNumber, String message) {

我是Android新手,在我的应用程序中,我想在不打开现有MessageApp的情况下向手机发送短信。为了实现这一点,我写了下面的代码,但我的手机没有收到任何消息

有什么问题

代码: 此外,我还在我的宣言文件中添加了以下权限

将禁用
sendSMS()
功能

    //---sends an SMS message to another device---
    private void sendSMS(String phoneNumber, String message)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, SMS.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);        
    }   
希望本教程能对您有所帮助!
导入android.telephony.SmsManager
导入android.telephony.gsm.SmsManager


这是我手机上的工作。版本6+可能需要权限,请查看并添加权限。它将帮助您。

您必须导入:
导入android.telephony.smsmsmanager

您还需要为Api>23添加运行时权限

if(isSMSPermissionGranted()){
    sendSms(String phoneNo, String msg);
}
使用此方法:

    public  boolean isSMSPermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(android.Manifest.permission.SEND_SMS)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.SEND_SMS}, 0);
            return false;
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v(TAG,"Permission is granted");
        return true;
    }
}
使用此功能

String mobileNumber="0123456789";
String messege="Message";

SmsManager sms = SmsManager.getDefault();
List<String> messages = sms.divideMessage(messege);

for (String msg : messages)
{
     PendingIntent sentIntent = PendingIntent.getBroadcast(getActivity(), 0,new   Intent("SMS_SENT"), 0);
     PendingIntent deliveredIntent =PendingIntent.getBroadcast(getActivity(), 0,new  Intent("SMS_DELIVERED"), 0);

     sms.sendTextMessage(personalPhone, null, msg, sentIntent, deliveredIntent);
}
String mobileNumber=“0123456789”;
字符串messege=“Message”;
SmsManager sms=SmsManager.getDefault();
列表消息=sms.divideMessage(消息);
用于(字符串消息:消息)
{
PendingEvent Sentinent=PendingEvent.getBroadcast(getActivity(),0,新意图(“SMS_发送”),0);
PendingIntent deliveredIntent=PendingIntent.getBroadcast(getActivity(),0,新意图(“SMS_已发送”),0;
sms.sendTextMessage(个人电话、null、msg、Sentinent、deliveredIntent);
}

我的电话没有收到信息在
捕获
块中是否出现异常?没有显示“已发送信息”,但我的电话没有收到信息尝试向电话号码添加
+国际电话代码
 @Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {

        case 0: {

            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(getContext(), "Permission granted", Toast.LENGTH_SHORT).show();
                //send sms here call your method
                sendSms(String phoneNo, String msg);
            } else {
                Toast.makeText(getContext(), "Permission denied", Toast.LENGTH_SHORT).show();
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
 }
String mobileNumber="0123456789";
String messege="Message";

SmsManager sms = SmsManager.getDefault();
List<String> messages = sms.divideMessage(messege);

for (String msg : messages)
{
     PendingIntent sentIntent = PendingIntent.getBroadcast(getActivity(), 0,new   Intent("SMS_SENT"), 0);
     PendingIntent deliveredIntent =PendingIntent.getBroadcast(getActivity(), 0,new  Intent("SMS_DELIVERED"), 0);

     sms.sendTextMessage(personalPhone, null, msg, sentIntent, deliveredIntent);
}