当应用程序当前未在屏幕上打开时,我将主要活动中的字符串传递给广播接收器时遇到问题。
当创建MainActivity类时,intent过滤器通过广播接收器返回正确的信息,但是当用户在他们的手机上进入主屏幕时,当接收器在屏幕外触发时,广播接收器开始为吐司返回“null”
1。新意图
Intent home_page = new Intent(newIntent.this,MainActivity.class);
ownAddress = ""+customInput.getText().toString();
home_page.putExtra("session_number", ""+ownAddress);
startActivity(home_page);
2。 MainActivity.java:
public class MainActivity extends DroidGap {
SmsReceiver mAppReceiver = new SmsReceiver();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
final String ownAddress = bundle.getString("session_number");
registerReceiver(mAppReceiver, new IntentFilter("SmsReceiver"));
Intent intent = new Intent("SmsReceiver");
intent.putExtra("passAddress", ownAddress);
sendBroadcast(intent);
}
}
3. :SmsReceiver.java:
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast showme = Toast.makeText(context,"Number: "+intent.getExtras().get("passAddress"),Toast.LENGTH_LONG);
showme.show();
}
}
当应用程序仅在后台运行时或者无论何时创建MainActivity类时,是否仍然将字符串传递给广播接收器?
答案 0 :(得分:0)
我可能在这里错了,但是,从逻辑上讲,当接收器在屏幕外触发时“广播接收器开始返回”为“toast”的原因是因为传递给onReceive构造函数的上下文在用户被销毁时被销毁进入主屏幕。
我想传递字符串的一个解决方案是在MainActivity中创建一个公共静态字符串变量,用于存储您想要传递的字符串值。然后,您所要做的就是在BroadcastReceiver中静态访问此字符串。