Android 安卓收到短信时,选中其他活动中的复选框
(对不起我的英语) 我有一张Picdem.net2开发卡,带有telit gt864四调制解调器GSM。当连接到开发卡的东西出现问题时(例如,水控制器出现问题),开发卡会向我的android手机发送短信,以阻止我 当sms到来时,它应该显示一个通知,并在另一个名为“etat”(状态)的活动中选中一个“警报”复选框。 SMS活动名为“SMSReceive” 因此,实际上我可以接收短信,它会带来一个警报通知,如果我点击它,谁会引导到应用程序。但我不知道如何勾选复选框 (复选框)findViewById(R.id…)不起作用Android 安卓收到短信时,选中其他活动中的复选框,android,android-activity,checkbox,sms,Android,Android Activity,Checkbox,Sms,(对不起我的英语) 我有一张Picdem.net2开发卡,带有telit gt864四调制解调器GSM。当连接到开发卡的东西出现问题时(例如,水控制器出现问题),开发卡会向我的android手机发送短信,以阻止我 当sms到来时,它应该显示一个通知,并在另一个名为“etat”(状态)的活动中选中一个“警报”复选框。 SMS活动名为“SMSReceive” 因此,实际上我可以接收短信,它会带来一个警报通知,如果我点击它,谁会引导到应用程序。但我不知道如何勾选复选框 (复选框)findViewByI
package com.example.locatiris;
import android.net.Uri;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.BroadcastReceiver;
import android.content.res.Resources;
import android.support.v4.app.NotificationCompat;
import android.telephony.SmsMessage;
import android.widget.Toast;
import android.app.PendingIntent;
import android.widget.CheckBox;
public class SMSReceive extends BroadcastReceiver
{
CheckBox water = null;
private static final int Notification_ID = 1234;
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
//SMS pdus = format de SMS
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for(int i=0; i<smsMessage.length; i++)
{
smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);
//récupérer le numéro
String msg_from = smsMessage[i].getOriginatingAddress();
//Récuperer message
String msg_cont = smsMessage[i].getMessageBody();
if(msg_from.equals("+33NUMBER") & msg_cont.contains("water"))
{
Toast toast = Toast.makeText(context,
"Message reçu " + smsMessage[0].getMessageBody(),
Toast.LENGTH_LONG);
toast.show();
//faire une action lors de réception
createNotification(context);
}
}
}
}
以下是通知创建者:
private final void createNotification(Context context2)
{
//vibreur spécial
long[] a = {0, 200, 200, 200, 500, 200, 500, 200, 200, 500, 200 };
//creer notification et ses parametres
NotificationCompat.Builder builder =
new NotificationCompat.Builder(context2)
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("Problème location détecté")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setVibrate(a)
.setSound(Uri.parse("file:///sdcard/Music/ZOUZ2.mp3"))
.setContentTitle("ALERTE Location")
.setContentText("Un problème est survenu dans la location");
//ouvrir l'application au clic sur notification
Intent notificationIntent = new Intent(context2, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context2, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
NotificationManager manager = (NotificationManager) context2.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(Notification_ID, builder.build());
}
谢谢你的帮助 在通知时使用以下代码单击以调用活动
Intent intent = new Intent(this, etat.class);
intent.putExtra("isSMSReceived", true/false);
startactivity(intent)
在您的活动中使用此代码
Intent intent = getIntent();
boolean state = intent.getBooleanExtra("isSMSReceived");
CheckBox cb = (CheckBox)findViewById(R.id. ...);
cb.setChecked(state);
是的,我现在理解你的代码是如何工作的,但是我试图纠正发生的错误。我把通知创建者放在第一篇文章中。我的错误是:Intent(SMSReceive,class)未定义,并且类型SMSReceive和其他活动的startactivity(Intent)方法未定义:Intent类型中的getbooleaneextra(String,boolean)方法不适用于我修改代码的参数(String),但问题是我的通知转到了“login”活动,而不是etat活动。所以我在“登录”活动中输入了第二个代码,它没有说有错误,但应用程序在启动时强制关闭。另外,如果我必须在getBooleanExtra方法中添加bool(“isSMSReceived”,true),但无论如何,感谢您的回答!看来我不能去有你第二个密码的活动了。我认为是getIntent()导致了力的闭合,但我不确定。在logcat中我可以看到:由java.lang.nullpointerexceptionSo引起,没有人知道问题出在哪里?谢谢
Intent intent = getIntent();
boolean state = intent.getBooleanExtra("isSMSReceived");
CheckBox cb = (CheckBox)findViewById(R.id. ...);
cb.setChecked(state);