잘못된 번호로 문자 메시지를 보내려고하면 NullPointerException이 발생합니다. 잘못된 문자는 영문자가 포함 된 전화 번호 등을 의미하며 out-of-service 번호는 아닙니다.)sendTextMessage() 잘못된 전화 번호가 지정된 경우 NullPointerException이 발생합니다.
내가 사용하는 코드는이 튜토리얼에서이다 : 사용자가 잘못된 전화 번호가 가장없는 입력 발생할 때 http://mobiforge.com/developing/story/sms-messaging-android
//---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message)
{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//---when the SMS has been delivered---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
이 응용 프로그램 충돌을 가졌어요. 그래서 제 질문은이 문제를 해결하기위한 좋은 접근 방법이 될 것입니다.
이 코드에서 NullPointerExceptions를 잡아서 토스트 오류가 발생할 수 있지만 NullPointerException이 다른 오류 (예 : 메시지가 너무 길고 여러 부분이어야합니다.
또 다른 해킹 방법은 EditText가 숫자와 '+'문자 만 허용하도록 제한하는 것입니다.
이러한 솔루션 중 하나에 만족스럽지 않습니다. sendTextMessage 메소드가보다 유익한 예외를 발생 시키거나 이에 대한 오류 코드를 브로드 캐스트해야하는 것이 이상적입니다.
당신은 예외를 얻고있다? –