Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android &引用;如果;BroadcastReceiver服务上的in方法将不起作用_Android_If Statement_Service_Broadcast_Receiver - Fatal编程技术网

Android &引用;如果;BroadcastReceiver服务上的in方法将不起作用

Android &引用;如果;BroadcastReceiver服务上的in方法将不起作用,android,if-statement,service,broadcast,receiver,Android,If Statement,Service,Broadcast,Receiver,我在检查“if”中的变量时遇到问题。我从SharedReferences和SmsMessage的phoneNumber中获得一个userPhoneNumber变量 我将用这两个变量显示Toast,它们是相同的,但if不起作用。问题在哪里 我的广播接收器类别: public class IncomingSms extends BroadcastReceiver { String userPhoneNumber = ""; String senderNum= ""; String message=

我在检查“if”中的变量时遇到问题。我从SharedReferences和SmsMessage的phoneNumber中获得一个userPhoneNumber变量

我将用这两个变量显示Toast,它们是相同的,但if不起作用。问题在哪里

我的广播接收器类别:

public class IncomingSms extends BroadcastReceiver {
String userPhoneNumber = "";
String senderNum= "";
String message= "";
final String TAG="LocationService";
GPSTracker gps;
double latitude = 0.0;
double longitude = 0.0;


// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();


public void onReceive(Context context, Intent intent) {
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
    userPhoneNumber = settings.getString("userPhoneNumber", "");

    Log.e(TAG, "userPhoneNumber:"+userPhoneNumber);
    int duration = Toast.LENGTH_LONG;

    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {
        if (bundle != null) {
            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {
                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress().toString();

                senderNum = phoneNumber;
                message = currentMessage.getDisplayMessageBody();

                turnOn(context);
            } // end for loop
        } // bundle is null

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);
    }
    Log.i("SmsReceiver", "senderNum: " + senderNum + "userPhoneNumber: "+ userPhoneNumber + "; message: " + message);


}

public void turnOn (Context context){
    Intent i  = new Intent(context, MyService.class);
    gps = new GPSTracker(context);

    Toast.makeText(context,"Method turnOn!\nsenderNum: "+senderNum + "\n userPhoneNumber: " + userPhoneNumber, Toast.LENGTH_LONG).show();

    if (senderNum == userPhoneNumber) {
        Toast.makeText(context,"works in IF", Toast.LENGTH_LONG).show();
        if(gps.canGetLocation()){
            latitude =  gps.getLatitude();
            longitude = gps.getLongitude();
            i.putExtra("Latitude", latitude);
            i.putExtra("Longitude", longitude);

            context.startService(i);
        }else
        {
            gps.showSettingsAlert();
        }
    }
    gps.stopUsingGPS();
}
public class IncomingSms扩展广播接收器{
字符串userPhoneNumber=“”;
字符串senderNum=“”;
字符串消息=”;
最终字符串标记=“LocationService”;
全球定位系统;
双纬度=0.0;
双经度=0.0;
//获取SmsManager的对象
final smsmsmanager sms=smsmsmanager.getDefault();
公共void onReceive(上下文、意图){
SharedReferences设置=PreferenceManager.GetDefaultSharedReferences(上下文);
userPhoneNumber=settings.getString(“userPhoneNumber”,“userPhoneNumber”);
Log.e(标记“userPhoneNumber:”+userPhoneNumber);
int duration=Toast.LENGTH\u LONG;
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
试一试{
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
对于(int i=0;i
senderNum这是一个字符串,表示您的if应该是:

if (senderNum.equals(userPhoneNumber))

您正在比较
senderNum
userPhoneNumber
是否引用同一对象。您需要更改

if (senderNum == userPhoneNumber)


我认为问题出在这种情况下。 要比较字符串值,应使用equals()函数。 ==测试对象引用,.equals()测试字符串值

试一试


谢谢!真的帮了大忙!
if (senderNum.equals(userPhoneNumber))
if (senderNum.equals(userPhoneNumber)) {
    //code
}