0
긴 SMS를 보내려면 다음 코드를 작성하십시오. 왜 내가 브로드 캐스트를받지 못합니까?
당신이 코드에서 볼 수 있듯이
나는 부분에 긴 시험을 절단하고 나는 (전달 SMS 설정 및 SMS에 대한) PendingIntents의 ArrayList를 제공 SmsManager와 부품을 보낼 수 있습니다.
I는 PendingIntents에 대해 2 개의 BroadcastReceivers를 등록합니다.
문제는
public void sendViaSms(String nexmoNumber, String message) {
initSmsReceivers();
SmsManager sms = SmsManager.getDefault();
//CREATE THE PARTS OF THE SMS
ArrayList<String> parts =sms.divideMessage(message);
int numParts = parts.size();
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
//POPULATE THE ARRAY OF PENDINGINTENTS
for (int i = 0; i < numParts; i++) {
sentIntents.add(PendingIntent.getBroadcast(MessageCompose.this, 0, new Intent(SENT), 0));
deliveryIntents.add(PendingIntent.getBroadcast(MessageCompose.this, 0, new Intent(DELIVERED), 0));
}
//SEND THE SMS IN PARTS WITH THE ARRAY OF PENDINGINTENTS
sms.sendMultipartTextMessage(nexmoNumber,null, parts, sentIntents, deliveryIntents);
}
//CREATE AND REGISTER THE BROADCASTRECEIVERS
private void initSmsReceivers() {
if (receiversInitialized) {
return;
}
receiversInitialized = true;
sendBroadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context contex, Intent intent) {
switch (getResultCode()) {
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_NULL_PDU:
case SmsManager.RESULT_ERROR_RADIO_OFF:
progressDialog.cancel();
showMessage(R.string.error, R.string.email_send_failed);
break;
}
}
};
deliveryBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context contex, Intent intent) {
if (!progressDialog.isShowing()) {
return;
}
switch (getResultCode()) {
case Activity.RESULT_OK:
showSuccessDialog();
break;
default:
showMessage(R.string.error, R.string.email_send_failed);
break;
}
progressDialog.cancel();
}
};
MessageCompose.this.registerReceiver(deliveryBroadcastReceiver,
new IntentFilter(DELIVERED));
MessageCompose.this.registerReceiver(sendBroadcastReceiver,
new IntentFilter(SENT));
}
수신자를 manifast에 정의 했습니까? –
권한이 있는지 확인하십시오. – betorcs