2011-06-26 60 views
0

我有一個實現廣播接收器的類。我也在這個班裏面,我希望能夠自動發送短信。這可能嗎。我試過很多不同的東西,似乎沒有任何工作。也許我做錯了什麼。但這是我迄今爲止的源代碼。如何在廣播接收器類中發送短信?

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:ERROR/ContactsProvider(175):無法確定的默認帳戶聯繫人兼容性

06-26 15:49:57.357:ERROR/ContactsProvider (175):android.accounts.AuthenticatorException:綁定失敗

06-26 15:49:57.357:ERROR/ContactsProvider(175):在android.accounts.AccountManager.convertErrorToException(AccountManager.java:1437)

06-26 15:49:57.357:錯誤/ ContactsProvider(175):at android.accounts.AccountManager.access $ 400(AccountManager.java:138)

06-26 15:49:57.357:ERROR/ContactsProvider(175):at android.os.Binder.execTransact (Binder.java:320)

06-26 15:49:57.357:ERROR/ContactsProvider(175):在dalvik.system.NativeStart.run(本機方法)

還有就是我的所有錯誤。

回答

3

您的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

@Femi是的確發送和接收....每當我運行該程序,它強制關閉後,我收到一條消息。 – theITRanger22

+1

如果強制關閉,那麼您必須在android日誌中出現錯誤:將您的錯誤日誌輸出添加到您的問題。 – Femi

+0

06-26 15:49:57.357:錯誤/ ContactsProvider(175):在android.os.Binder.execTransact(Binder.java:320) – theITRanger22

0

將這個塊的廣播接收器的文件裏。

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" /> 

我希望這有助於!

相關問題