短信 Android 即使收到确认,应用程序也无法始终发送短信
SMS Android app does not always work to send SMS out even though confirmation is received
我有一个简单的应用程序,只需单击一个按钮即可向我的志愿者组织发送警报短信,但并不总是发送短信,即使吐司说该功能已成功执行。
我已经尝试多次安装和卸载该应用程序,但仍然是同样的问题。此外,正如您可能看到的那样,我已经添加了实际上将 SMS 发送到多个不同位置的调用,但我确信这不是问题,因为显示了成功的 toast,这意味着应用程序通过了那个点。
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity {
private ArrayList<String> phones = new ArrayList<String>();
private static final int PERMISSION_REQUEST_SEND_SMS = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button emergency_btn = findViewById(R.id.emergency_btn);
fill_numbers();
emergency_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("tag", "onClick: clicked");
SMS_handler();
}
});
}
private void SMS_handler(){
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)!=
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)){
}
else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS},
PERMISSION_REQUEST_SEND_SMS);
}
}
else {
send_SMS();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_SEND_SMS: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
send_SMS();
}
else {
Toast.makeText(getApplicationContext(), "SMS failed, please try again", Toast.LENGTH_LONG).show();
}
}
}
}
private void send_SMS() {
SmsManager smsManager = SmsManager.getDefault();
for (int i = 0; i < phones.size(); i++){
smsManager.sendTextMessage(phones.get(i), null,
"ΠΥΡΑΣΦΑΛΕΙΑ ΒΑΡΗΣ\nΕΠΕΙΓΟΝ\nΜΕΤΑΒΕΙΤΕ ΑΜΕΣΑ ΣΤΟΝ ΣΤΑΘΜΟ\n\n" +
"PYRASFALEIA VARIS\nEMERGENCY\nPLEASE PROCEED TO THE STATION IMMEDIATELY", null, null);
System.out.println("sending ");
System.out.println(i);
}
Toast.makeText(getApplicationContext(), "SMS Sent", Toast.LENGTH_LONG).show();
}
private void fill_numbers() {
phones.add("xxxxx");
phones.add("xxxxxx");
}
}
您认为这可能是 phone 问题而不是应用程序问题吗?如果我尝试手动发送短信,它会正常工作。
正如@Mike.M 在评论中所建议的那样,短信太大了。在不同的 SMS 中分解消息或截断消息有效。
答案here也可以提供进一步的帮助。
我有一个简单的应用程序,只需单击一个按钮即可向我的志愿者组织发送警报短信,但并不总是发送短信,即使吐司说该功能已成功执行。
我已经尝试多次安装和卸载该应用程序,但仍然是同样的问题。此外,正如您可能看到的那样,我已经添加了实际上将 SMS 发送到多个不同位置的调用,但我确信这不是问题,因为显示了成功的 toast,这意味着应用程序通过了那个点。
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity {
private ArrayList<String> phones = new ArrayList<String>();
private static final int PERMISSION_REQUEST_SEND_SMS = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button emergency_btn = findViewById(R.id.emergency_btn);
fill_numbers();
emergency_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("tag", "onClick: clicked");
SMS_handler();
}
});
}
private void SMS_handler(){
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)!=
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)){
}
else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS},
PERMISSION_REQUEST_SEND_SMS);
}
}
else {
send_SMS();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_SEND_SMS: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
send_SMS();
}
else {
Toast.makeText(getApplicationContext(), "SMS failed, please try again", Toast.LENGTH_LONG).show();
}
}
}
}
private void send_SMS() {
SmsManager smsManager = SmsManager.getDefault();
for (int i = 0; i < phones.size(); i++){
smsManager.sendTextMessage(phones.get(i), null,
"ΠΥΡΑΣΦΑΛΕΙΑ ΒΑΡΗΣ\nΕΠΕΙΓΟΝ\nΜΕΤΑΒΕΙΤΕ ΑΜΕΣΑ ΣΤΟΝ ΣΤΑΘΜΟ\n\n" +
"PYRASFALEIA VARIS\nEMERGENCY\nPLEASE PROCEED TO THE STATION IMMEDIATELY", null, null);
System.out.println("sending ");
System.out.println(i);
}
Toast.makeText(getApplicationContext(), "SMS Sent", Toast.LENGTH_LONG).show();
}
private void fill_numbers() {
phones.add("xxxxx");
phones.add("xxxxxx");
}
}
您认为这可能是 phone 问题而不是应用程序问题吗?如果我尝试手动发送短信,它会正常工作。
正如@Mike.M 在评论中所建议的那样,短信太大了。在不同的 SMS 中分解消息或截断消息有效。
答案here也可以提供进一步的帮助。