1
まずは、私の悪い文法には申し訳ありません。私は、自動返信メッセージアプリケーションを開発しています。私はブロードキャスト受信者を使ってアプリケーションから値を受け取ることができますが、自動返信は機能しません。しかし、私がアクティビティからの価値を受け取っていなければ、それは機能しています。これは私がonSensorChanged()Android:アクティビティからブロードキャスト受信者への値を
Intent i = new Intent("my.action.string");
i.putExtra("apaan", lala);
sendBroadcast(i);
に入れて、これは私のbroadcastreceiverクラス
public class AutoReply extends BroadcastReceiver{
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("message", "Broadcast Received: " +action);
if (action.equals(SMS_RECEIVED) && action.equals("my.action.string")) {
Bundle bundle = intent.getExtras();
String state = bundle.getString("apaan");
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
final SmsMessage[] sms = new SmsMessage[pdus.length];
String isiSMS = "", noPengirim = "";
for (int i = 0; i < pdus.length; i++) {
sms[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
isiSMS = sms[i].getMessageBody();//mengambil isi pesan dari pengirim
noPengirim = sms[i].getOriginatingAddress();//mengambil no pengirim
}
String message = state;//isi balasan autoreplay
SmsManager smsSend = SmsManager.getDefault();
smsSend.sendTextMessage(noPengirim, null, message, null, null);
}
}
}
で、私の活動のコードであり、これは私のマニフェスト
<receiver android:name=".AutoReply" android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="my.action.string" />
</intent-filter>
</receiver>
お返事ありがとうございます。しかし私が試してみると、最終的にはsmsMessage [] sms = .....の放送受信機クラスで別のエラーが出ます。それは言うnull配列の長さを取得しようとしている –
それは "pdus"を送信していないので、 'bundle.get(" pdus ")'を呼び出すとき、それはnullを返します。そして 'pdus.length'を呼び出すと、NullPointerExceptionがスローされます。 –
ありがとう、私はそれを得る。しかし、エラーを修正するために私は何をすべきですか? –