程序接收了短信广播,从中获取了发信人号码,然后与预设的号码比较,结果却是恒为否。代码如下:
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for(Object p : pdus){
 byte[] sms = (byte[]) p;
 SmsMessage message = SmsMessage.createFromPdu(sms);
 String number = message.getOriginatingAddress();
 if(number=="661"); // DO……
}
明明发送号码是661结果判断就是为否,Log.i输出number显示也为"661"
另外如何从在这个intent中获取收信号码呢?(因为手机是双卡双待,需要区别一下是发到哪个卡的短信)android第一问,可能问题比较弱智,请大家指教。

解决方案 »

  1.   

    别看java的String可以用+号,但java是不支持操作符重载的。所以那个+号只是特例,所以String的==号其实是对对象引用的比较,相当于比较它们的指针(java里没指针,但其实所有对象本质上来说就是指针)。若要比较内容,可以调用equals方法,这是Object类的方法,所以理论上任何一个java类都带有这个方法,至于有没有实现,就是另一回事了。不过一般系统自带的对象类型都是实现了的
      

  2.   

    用equals成功,java也不懂,equals和==有什么区别,这里为什么不能用==呢
      

  3.   

    "661".equals(number);
    ==比较的是两个对象,
    equals比较的是对象的值
    虽然值相等,但是是两个对象,各自的地址不同,所有不相等。