我声明了一个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 应该引用响铃,但它仍然显示为“空闲”,有人可以解释它为什么会发生吗?
问题不在于比较字符串,问题是我想要更改字符串的引用,它不是重复的问题。
谢谢!