2017-05-31 57 views
1

我正在構建一個應用程序,該應用程序在後臺線程中以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意圖是不正確的。對於類似的問題,我已經看過建議,但我無法弄清楚問題所在。任何人都可以幫助我嗎?

+1

此外,這可能是同樣的事情https://stackoverflow.com/questions/9137477/passing-data-from-broadcast-receiver-to-another-activity?rq=1 – Ivan86

+0

發佈的logcat –

回答

0

試試這個,它爲我工作。

Intent in = new Intent(context, Popup.class); 
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
context.startActivity(in); 
+0

也適用於我!太好了,謝謝你 - 克里斯 –

+0

如果你認爲它的正確答案,那麼你只需投票並打上正確的標誌,它可以幫助別人得到正確的答案。 –