在使用阿里云短信服务前,首先需要在阿里云控制台中获取并配置相关信息。
- 注册阿里云账号并登录阿里云控制台。
- 在控制台中搜索并打开”短信服务”。
- 点击左侧导航栏的”产品总览”,然后点击右上角的”开通服务”,按照提示完成开通。
接下来,可以使用以下代码在Android中发送短信。
import okhttp3.*;
import org.json.JSONObject;
import java.io.IOException;
public class AliyunSMS {
private static final String ACCESS_KEY_ID = "<YourAccessKeyId>"; // 替换为真实的AccessKeyId
private static final String ACCESS_KEY_SECRET = "<YourAccessKeySecret>"; // 替换为真实的AccessKeySecret
private static final String SIGN_NAME = "<YourSignName>"; // 替换为真实的短信签名
private static final String TEMPLATE_CODE = "<YourTemplateCode>"; // 替换为真实的短信模板CODE
private static final String URL = "https://dysmsapi.aliyuncs.com/";
private static final String HTTP_METHOD = "POST";
private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
private static final OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws IOException {
String phoneNumber = "手机号码"; // 替换为真实的手机号码
String verificationCode = "123456"; // 替换为真实的验证码
JSONObject params = new JSONObject();
params.put("PhoneNumbers", phoneNumber);
params.put("SignName", SIGN_NAME);
params.put("TemplateCode", TEMPLATE_CODE);
params.put("TemplateParam", "{"code":"" + verificationCode + ""}");
String requestBody = params.toString();
Request request = new Request.Builder()
.url(URL)
.post(RequestBody.create(requestBody, JSON))
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
System.out.println(response.body().string());
// 发送成功,处理返回结果
} else {
// 发送失败,可进行相应的处理
throw new IOException("Unexpected code " + response);
}
}
}
上述代码中的 <YourAccessKeyId>
、<YourAccessKeySecret>
、<YourSignName>
、<YourTemplateCode>
分别需要替换为真实的阿里云Access Key ID、Access Key Secret、短信签名和短信模板 CODE。请注意,短信模板中如果有变量,需要在 TemplateParam
中传入相应的值。
请确保引入了 OkHttp 库用于发送 HTTP 请求。
以下是在Android中发送短信的代码示例:
首先,在AndroidManifest.xml
文件中添加以下权限声明:
<uses-permission android:name="android.permission.SEND_SMS"/>
然后,在你的Activity或Fragment中添加以下代码:
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 1;
private EditText phoneNumberEditText;
private EditText messageEditText;
private Button sendButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
phoneNumberEditText = findViewById(R.id.editTextPhoneNumber);
messageEditText = findViewById(R.id.editTextMessage);
sendButton = findViewById(R.id.buttonSend);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendSMS();
}
});
}
private void sendSMS() {
String phoneNumber = phoneNumberEditText.getText().toString();
String message = messageEditText.getText().toString();
if (phoneNumber.isEmpty() || message.isEmpty()) {
Toast.makeText(this, "请填写 手机号码 和 消息内容", Toast.LENGTH_SHORT).show();
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, PERMISSION_REQUEST_CODE);
} else {
sendTextMessage(phoneNumber, message);
}
} else {
sendTextMessage(phoneNumber, message);
}
}
}
private void sendTextMessage(String phoneNumber, String message) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
Toast.makeText(this, "短信发送成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(this, "短信发送失败", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
sendSMS();
} else {
Toast.makeText(this, "请授予短信发送权限", Toast.LENGTH_SHORT).show();
}
}
}
}
以上代码中,我们首先获取用户输入的手机号码和消息内容,然后通过SmsManager
类的sendTextMessage
方法发送短信。在Android 6.0及以上版本中,需要动态请求短信发送权限。如果权限请求被授予,将发送短信;否则,将显示一个提示消息。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/148528.html