當我的主要活動將字符串傳遞到廣播接收器時,當應用程序當前未在屏幕上打開時,我遇到問題。從活動傳遞字符串到廣播接收器
當創建MainActivity類時,意圖過濾器通過廣播接收器返回正確的信息,但只要用戶轉到其電話上的主屏幕,廣播接收器就會在接收器被觸發時開始返回「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類?
「Activity」實際上是一個UI框架。如果它不可見,那麼一般來說,它沒有運行。解釋更多關於你想要做什麼的,目前還不清楚。 – Squonk 2012-08-06 23:33:56
每次觸發它時,我需要從活動傳遞給廣播接收器的字符串,因爲我構建的應用程序將根據字符串的內容執行HttpPost。 – localhost 2012-08-07 00:14:42
我還是不明白 - 「活動」不應該被「事件」'觸發',這就是'BroadcastReceivers'的全部要點。什麼是'觸發''活動' - 在我看來,你需要繞過'中間人'('活動'),因爲你不能保證它會一直運行,因爲你的問題顯然是全部關於。 「Activity」是一個UI框架 - 它不是一個通用的類。 – Squonk 2012-08-07 00:31:09