📜  在Android中使用SmsManager通过电话发送短信

📅  最后修改于: 2021-05-09 16:26:37             🧑  作者: Mango

本文是关于在Android应用程序中使用SMSManager类通过电话发送文本SMS的。为此,需要具备android应用程序开发,创建新项目,运行android应用程序,视图以及单击事件按钮处理的基础知识。

SMSManager类管理诸如发送文本消息,数据消息和彩信(MMS)之类的操作。为了发送文本消息, sendTextMessage()同样用于彩信sendMultimediaMessage() ,对于数据消息,使用sendDataMessage()方法。每个函数的详细信息是:

Function

Description

sendTextMessage() sendTextMessage(String destinationAddress, 
String scAddress, String text, PendingIntent sentIntent,
 PendingIntent deliveryIntent, long messageId) 
sendDataMessage() sendDataMessage(String destinationAddress, 
String scAddress, short destinationPort, byte[] data,
 PendingIntent sentIntent, PendingIntent deliveryIntent)
sendMultimediaMessage() sendMultimediaMessage(Context context, 
Uri contentUri, String locationUrl, 
Bundle configOverrides, PendingIntent sentIntent

以下是发送文本消息的基本应用程序的示例。

方法:

第1步:创建一个新的Android应用程序。

第2步:转到AndroidManifest.xml

步骤3 :在AndroidManifest.xml中添加发送短信的权限。它将允许android应用程序发送短信。

AndroidManifest.xml


    
    
  
    
        
            
                
  
                
            
        
    
  


activity_main.xml


  
  
    
  
    
  
    


MainActivity.java
package com.example.gfg;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
public class MainActivity extends AppCompatActivity {
    EditText phonenumber,message;
    Button send;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send=findViewById(R.id.button);
        phonenumber=findViewById(R.id.editText);
        message=findViewById(R.id.editText2);
        send.setOnClickListener(new View.OnClickListener() {
  
            public void onClick(View view) {
                String number=phonenumber.getText().toString();
                String msg=message.getText().toString();
                try {
                    SmsManager smsManager=SmsManager.getDefault();
                    smsManager.sendTextMessage(number,null,msg,null,null);
                    Toast.makeText(getApplicationContext(),"Message Sent",Toast.LENGTH_LONG).show();
                }catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(),"Some fiels is Empty",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}


步骤4:从以下地址打开activity_main.xml并添加以下代码。在这里,在线性布局中,添加了两个用于获取电话号码和文本消息的edittext,以及用于发送消息的按钮。

activity_main.xml



  
  
    
  
    
  
    

步骤5:打开MainActivity。Java

为使用的视图创建对象,即editTexts和button。在onCreate方法中,使用findViewById()方法查找所有视图。

由于“发送”按钮用于发送消息,因此onClickListener随按钮一起添加。现在创建两个字符串变量,并使用方法getText()将editText电话号码和消息的值存储到它们中(在使用toString()方法将其转换为字符串之前进行分配)。现在,在try块中,创建SMSManager类的实例,并获取与默认订阅ID关联的SMSManager。现在调用方法sendTextMessage()发送消息。

然后将烤面包消息显示为“消息已发送”,并关闭try块。最后在catch块中显示一条Toast消息,因为如果编译器执行此代码块,则该消息未发送。

主要活动。Java

package com.example.gfg;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
public class MainActivity extends AppCompatActivity {
    EditText phonenumber,message;
    Button send;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send=findViewById(R.id.button);
        phonenumber=findViewById(R.id.editText);
        message=findViewById(R.id.editText2);
        send.setOnClickListener(new View.OnClickListener() {
  
            public void onClick(View view) {
                String number=phonenumber.getText().toString();
                String msg=message.getText().toString();
                try {
                    SmsManager smsManager=SmsManager.getDefault();
                    smsManager.sendTextMessage(number,null,msg,null,null);
                    Toast.makeText(getApplicationContext(),"Message Sent",Toast.LENGTH_LONG).show();
                }catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(),"Some fiels is Empty",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

笔记: 要在Android设备上运行应用程序,请为该应用程序启用短信权限。

Goto permissions->SMS->YourApp and enable permission.

输出:

发送信息

在消息传递应用中发送消息