SMSを介してポーリングするためのアプリを作成しています。私が欲しいのは、誰かが「はい」と言った場合、私は私のはいカウントで+1を取得し、「いいえ」の場合も同様です。これをバックグラウンドで実行したいので、サービスを使用しています。そして、私のに最終結果を表示しますMainActivity
。私は試して、次のコードを作成しました:: BroadcastReciver
/*Bundle bundle = intent.getExtras();
SmsMessage[] msg = null;
String body = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msg = new SmsMessage[pdus.length];
for (int i = 0; i < msg.length; i++) {
body = msg[i].getMessageBody().toString();
}
}*/
String body = "yes";
if(body.equals("YES") || body.equals("yes")|| body.equals("y") || body.equals("Y")){
Intent yes = new Intent(context,PollCounter.class);
yes.putExtra("yes", true);
yes.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(yes);
context.stopService(yes);
}
else if(body.equals("NO") || body.equals("no")|| body.equals("n") || body.equals("N")){
Intent no = new Intent(context,PollCounter.class);
no.putExtra("no", true);
no.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(no);
context.stopService(no);
}
else {
Intent invalidMsg = new Intent(context,PollCounter.class);
invalidMsg.putExtra("invalidMsg", true);
context.startService(invalidMsg);
}
}
}
BroadcastReceiverにも問題があります。コメントを外すと、「E / AndroidRuntime(708):java.lang.RuntimeException:レシーバーcom.atiffarrukh.smspolling.SMSBroadcastReciever:java.lang.NullPointerExceptionを開始できません」エラーが発生します。続く
/*Bundle bundle = intent.getExtras();
SmsMessage[] msg = null;
String body = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msg = new SmsMessage[pdus.length];
for (int i = 0; i < msg.length; i++) {
body = msg[i].getMessageBody().toString();
}
}*/
理由はわかりません。以前にこのコードを使用しましたが、機能していました。
Service
::で
boolean yes = intent.getBooleanExtra("yes", false);
boolean no = intent.getBooleanExtra("no", false);
boolean invalidMsg = intent.getBooleanExtra("invalidMsg", false);
if (yes) {
yesCount++;
Intent intentYes = new Intent(this,MainActivity.class);
intentYes.putExtra("yesCount", yesCount);
startActivity(intentYes);
Toast.makeText(getBaseContext(), "yes is recvd", Toast.LENGTH_LONG).show();
} else if (no) {
noCount++;
Intent intentNo = new Intent(this,MainActivity.class);
intentNo.putExtra("yesCount", noCount);
startActivity(intentNo);
Toast.makeText(getBaseContext(), "no is recvd", Toast.LENGTH_LONG).show();
} else {
invalidMsgCount++;
Intent intentInavalidMsg = new Intent(this,MainActivity.class);
intentInavalidMsg.putExtra("yesCount", invalidMsgCount);
Toast.makeText(getBaseContext(), "Invalid is recvd", Toast.LENGTH_LONG).show();
}
}
使用しようとしましたが、使用Bundle b = intent.getExtras();
方法がわかりません。何で初期化すればよいですかintent
。
ありがとう...
PS:私はAndroidを初めて使用します。私の質問が少し奇妙であるか、私のコーディングが奇妙に思われる場合は申し訳ありません。