2013-01-15 37 views
2

首先,我已經嘗試添加flag_activity_new_task,但它仍然不起作用。當從廣播接收器開始一個活動時,應用程序崩潰,從服務發送

這裏是流程: 我有一個服務運行,在後臺線程上執行http請求並獲取數據。無論何時收到某些數據,我都需要將其顯示給用戶(例如,可以更新應用程序)。爲此,我使用廣播,並設置了一個接收器。一切工作正常,直到這裏。

但是,當我TRU從這個接收器開始活動,應用程序崩潰說:

"01-15 17:03:30.129: E/AndroidRuntime(28014): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
" 

即使我已經加入該標誌。下面是代碼:

服務部分:

try 
{ 
    JSONObject mAdDetails = mResult.getJSONObject(Tags.TAG_RPC_SMALL_AD_DETAILS); 

    Intent mI = new Intent(); 
    mI.setAction(ReceiverAdvertSmall.INTENT_ACTION); 

    mI.putExtra(AppMapKeys.KEY_AD_HEADING, mAdDetails.getString(Tags.TAG_RPC_AD_HEADING)); 
    mI.putExtra(AppMapKeys.KEY_AD_DESCRIPTION, mAdDetails.getString(Tags.TAG_RPC_AD_DESCRIPTION)); 
    mI.putExtra(AppMapKeys.KEY_AD_LINK, mAdDetails.getString(Tags.TAG_RPC_AD_LINK)); 

    sendBroadcast(mI); 

} 
catch(JSONException e) 
{ 

} 

接收器部分:

@Override 
public void onReceive(Context mContext, Intent data) 
{ 
    Intent mI = new Intent(mContext, ActivityAdvertSmall.class); 

    mI.putExtras(data.getExtras()); 
    mI.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    mContext.startActivity(data); 
} 

我究竟做錯了什麼? Iam在最後一個小時無法弄清楚。

Thanx提前...

回答

4

使用創建的

mContext.startActivity(data); 

mContext.startActivity(mI); 

,而不是意圖從onReceive開始活動,因爲要添加FLAG_ACTIVITY_NEW_TASK標誌mI意圖,但嘗試使用data意圖

+0

媽的意圖!謝謝....這個愚蠢的錯誤 –

3

你應該通過你startActivity()

mContext.startActivity(mI); 
0

OK開始活動....這裏是我做了stupidiest錯誤。我錯誤地使用了startActivity(data)而不是startActivity(mI)。結束這個問題。

0

只是通過你創建的startActivity()

mContext.startActivity(mI); 
相關問題