2011-06-26 7 views
0

私は放送受信機を実装するクラスを持っています。私もこのクラスの中で私は自動的にテキストメッセージを送信できるようにしたい。これは可能ですか? Iveはさまざまなことを試みましたが、何も動かないようです。多分私は間違ったことをしています。しかし、ここに私のソースコードがあります。ブロードキャストレシーバクラス内でSMSメッセージを送信する方法は?

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エラー

6月26日15:49:57.357:ERROR/ContactsProvider(175):49:57.357:ERROR/ContactsProvider接点の互換性

6月26日15のデフォルトのアカウントを特定できません(175):android.accounts.AuthenticatorException:バインド故障

6月26日15:49:57.357:ERROR/ContactsProvider(175):android.accounts.AccountManager.convertErrorToException(AccountManager.java:1437)で

06-26 15:49:57.357:エラー/ ContactsProvider(175):android.accounts.AccountManager.access $ 400(AccountManager.java:138)

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

6月26日15:49:57.357:ERROR/ContactsProvider(175):dalvik.system.NativeStart.run(ネイティブメソッド)

ですべての私のエラーがあります。

答えて

3

あなたのAndroidManifest.xmlにはSEND_SMSの許可が含まれていますか?

EDIT:これを試してみて、それが何かを出力した場合を参照してください。

@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

強制終了した場合は、アンドロイドログにエラーがある必要があります。エラーログ出力を質問に追加してください。 – Femi

+0

06-26 15:49:57.357:ERROR/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" /> 

私はこれが助けてくれることを願っています!

関連する問題