我正在構建一個應用程序,該應用程序在後臺線程中以10秒的間隔監視GPS位置,並根據某些標準對其進行測試,如果測試成功,則會向廣播接收器發送消息。接收器的以下代碼從後臺線程獲取經度和緯度,並且只需在吐司中顯示結果即可正常工作。從廣播接收器調用另一個活動
package com.barney.gpstracking;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class PosReceiver extends BroadcastReceiver {
double lat, lon;
String slat, slon;
@Override
public void onReceive(Context context, Intent intent) {
Bundle params = intent.getExtras();
if (params != null) {
lat = params.getDouble("lati");
slat = String.valueOf(lat);
lon = params.getDouble("long");
slon = String.valueOf(lon);
}
Toast.makeText(context, "Position is:" + lat + " " + lon, Toast.LENGTH_LONG).show();
}
}
但是,如果我用電話代替敬酒,開始另一個活動如下:
lon = params.getDouble("long");
slon = String.valueOf(lon);
}
Intent goPop=new Intent(context,PopUpActivity.class);
context.startActivity(goPop);
}
}
然後編譯和安裝我的設備好上,但我儘快得到一個運行時錯誤因爲它試圖接收廣播。如果我嘗試從別處調用它(例如,從主活動),我試圖調用的PopUpActivity完美。因此,我想上面的goPop意圖是不正確的。對於類似的問題,我已經看過建議,但我無法弄清楚問題所在。任何人都可以幫助我嗎?
此外,這可能是同樣的事情https://stackoverflow.com/questions/9137477/passing-data-from-broadcast-receiver-to-another-activity?rq=1 – Ivan86
發佈的logcat –