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