收到广播,但字符串仍然是初始值

时间:2015-11-29 11:08:18

标签: java android if-statement broadcastreceiver

我声明了一个String previousState ,当调用广播接收器onReceive时,我更改了String的引用,但是在执行了if语句之后,对String的引用变回了原始值。

我试图从互联网上搜索,但也许我使用的关键字不正确我找不到任何合适的信息。如果有人能向我解释或向我显示信息链接

,我感激不尽

代码如下所示

public class IncomingCall extends BroadcastReceiver {
String previousState = "idle";
String ringing = "ringing";
String offhook = "offhook";

@Override
public void onReceive(Context context, Intent intent) {

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

//the first part
    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
        Toast.makeText(context, "ringing", Toast.LENGTH_SHORT).show();
        previousState = ringing;
        Toast.makeText(context, previousState, Toast.LENGTH_SHORT).show();
    }
//the second part
 if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
        Toast.makeText(context, "off hook ", Toast.LENGTH_SHORT).show();
        Toast.makeText(context, previousState, Toast.LENGTH_SHORT).show();
        if (previousState.equals(ringing)){
            Toast.makeText(context, "previous is ringing ", Toast.LENGTH_SHORT).show();}
                 }

正如你所看到的,当有人打电话时,如果用户接听了电话,电话状态会从空闲状态变为响铃然后变为摘机状态,因此在执行第一部分后,应执行第二部分。

执行第一部分后, previousState 应该引用响铃,但它仍然显示为“空闲”,有人可以解释它为什么会发生吗?

问题不在于比较字符串,问题是我想要更改字符串的引用,它不是重复的问题。

谢谢!

0 个答案:

没有答案