Как отправить смс сообщение внутри класса приемника вещания? - PullRequest
0 голосов
/ 26 июня 2011

У меня есть класс, который реализует приемник вещания. Я также внутри этого класса, я хочу иметь возможность отправлять текстовые сообщения автоматически. Это возможно. Я пробовал много разных вещей, и ничего не работает. Может быть, я делаю что-то не так. Но вот мой исходный код, который у меня есть.

public class smsReceiver extends BroadcastReceiver {
private  MainActivity main;

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, smsReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
    Bundle bundle = intent.getExtras();

    String str = "";
    String phonenumber = "";
    String houseNumber ="22";
    String message = "Two bedrooms Two Baths";

        SmsMessage []msgs = null;
        SmsManager sms = SmsManager.getDefault();   
        if(bundle != null){
        Object[]pdus = (Object[])bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
        for(int i2=0; i2<msgs.length; i2++){

        msgs[i2]= SmsMessage.createFromPdu((byte[])pdus[i2]);
        phonenumber +=  msgs[i2].getOriginatingAddress();


        str += msgs[i2].getMessageBody().toString();



        }




        sms.sendTextMessage(phonenumber, null, message, pi, null);



    }



    }

}

Если я что-то делаю не так, пожалуйста, дайте мне знать. Спасибо всем заранее.

Logcat ошибки

06-26 15: 49: 57.357: ОШИБКА / ContactsProvider (175): невозможно определить учетную запись по умолчанию для совместимости контактов

06-26 15: 49: 57.357: ОШИБКА / Поставщик контактов (175): android.accounts.AuthenticatorException: ошибка привязки

06-26 15: 49: 57.357: ОШИБКА / Поставщик контактов (175): на android.accounts.AccountManager.convertErrorToException (AccountManager.java:1437)

06-26 15: 49: 57.357: ОШИБКА / Поставщик контактов (175): на android.accounts.AccountManager.access $ 400 (AccountManager.java:138)

06-26 15: 49: 57.357: ОШИБКА / Поставщик контактов (175): atroid.os.Binder.execTransact (Binder.java:320)

06-26 15: 49: 57.357: ОШИБКА / Поставщик контактов (175): at dalvik.system.NativeStart.run (собственный метод)

Есть все мои ошибки.

Ответы [ 2 ]

3 голосов
/ 26 июня 2011

Включает ли ваш AndroidManifest.xml разрешение SEND_SMS ?

РЕДАКТИРОВАТЬ: попробуйте это и посмотрите, распечатывает ли что-нибудь:

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, smsReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
    Bundle bundle = intent.getExtras();

    String str = "";
    String phonenumber = "";
    String houseNumber ="22";
    String message = "Two bedrooms Two Baths";
try{
        SmsMessage []msgs = null;
        SmsManager sms = SmsManager.getDefault();   
        if(bundle != null){
        Object[]pdus = (Object[])bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
        for(int i2=0; i2<msgs.length; i2++){

        msgs[i2]= SmsMessage.createFromPdu((byte[])pdus[i2]);
        phonenumber +=  msgs[i2].getOriginatingAddress();


        str += msgs[i2].getMessageBody().toString();



        }




        sms.sendTextMessage(phonenumber, null, message, pi, null);
}
}catch(Exception e1){
    android.util.Log.v("SMS ERROR","Exception sending SMS ["+e1.getMessage()+"]", e1);
}
}
0 голосов
/ 28 июня 2012

Поместите этот блок в файл вашего приемника вещания.

String phonenumber = "123456789";
String message     = "Message";
 SmsMessage []msgs = null;
  SmsManager sms   = SmsManager.getDefault();
  sms.sendTextMessage(phonenumber, null, message, null, null);


Вам нужно будет поместить это рядом с вашими импортами в тот же файл:

import android.telephony.gsm.SmsManager;


Вам также понадобится это разрешение в вашем манифесте:

<uses-permission android:name="android.permission.SEND_SMS" />

Надеюсь, это поможет!

...