gpt4 book ai didi

java - BroadcastReceiver 对象只使用初始值,为什么?

转载 作者:行者123 更新时间:2023-11-30 02:38:49 26 4
gpt4 key购买 nike

你好,我正在尝试运行一个代码,其中有一个 Activity 和一个 BroadcastReceiver,它在新消息到来时运行,是的,它运行得很清楚,但我的 BroadcastReceiver 对象有问题!

它是 MainActivity 类的一部分:

public class MainActivity extends FragmentActivity {


private IncomingSms checkAndDo; //=> OBJECT

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


checkAndDo= new IncomingSms();
checkAndDo.setProgramState(210); // program state is a variable
checkAndDo.getProgramState(this); // Toast output : " >>>210 "

....

但是当收到新消息并调用 onReceived() 时,问题就开始了! IncommingSms 类:

公共(public)类 IncomingSms 扩展 BroadcastReceiver {

private int programState=110; // Which state we are ?  110=> white / 111=> off / 210=>black ...     


public void onReceive(Context context, Intent intent) {

final Bundle bundle = intent.getExtras();


this.getProgramState(context);
// This method called again but toast output is : ">>>110"
// which is initial value !?

AND ....

}



public void setProgramState(int status) {

this.programState=status;

}


public void getProgramState( Context context) {


Toast.makeText(context, ">>>"+this.programState , Toast.LENGTH_LONG).show();

}

问题:我不确定为什么会发生这种情况,但 onReceive() 只使用了非常糟糕的初始值。有什么想法吗?

最佳答案

this.getProgramState(context);  
// This method called again but toast output is : ">>>110"
// which is initial value !?

您遇到该问题是因为您在 list 中注册了 BroadcastReceiver。所以Android会创建一个新的BroadcastReceiver并将短信广播传递给它。

如果您想获得您在程序中设置的状态,您必须在您的 Activity 中注册您的 BroadcastReceiver。

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(checkAndDo, filter);

关于java - BroadcastReceiver 对象只使用初始值,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com