2

まず、flag_activity_new_task を追加しようとしましたが、まだ機能していません。

フローは次のとおりです。バックグラウンド スレッドで http 要求を実行し、データを取得するサービスを実行しています。特定のデータを受信するたびに、それをユーザーに表示する必要があります (たとえば、アプリの更新が利用可能です)。このために、ブロードキャストを使用し、受信機をセットアップしました。ここまではすべて正常に動作します。

しかし、このレシーバーからアクティビティを開始しようとすると、アプリがクラッシュして次のように表示されます。

"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);
}

私は何を間違っていますか? 私は最後の1時間それを理解することができません.!!

事前にサンクス...

4

4 に答える 4

5

使用する

 mContext.startActivity(mI);

それ以外の

 mContext.startActivity(data);

インテントにフラグをonReceive追加しているが、インテントを使用してアクティビティを開始しようとしているため、アクティビティを開始するためFLAG_ACTIVITY_NEW_TASKmIdata

于 2013-01-15T11:46:01.490 に答える
3

作成したインテントをに渡す必要がありますstartActivity()

 mContext.startActivity(mI);
于 2013-01-15T11:45:33.390 に答える
0

わかりました....これが私が犯した最も愚かな間違いでした。startActivity(data)の代わりに間違って使用しましたstartActivity(mI)。質問を締めくくります。

于 2013-01-15T11:51:19.140 に答える
0

作成したインテントをstartActivity()に渡すだけです

 mContext.startActivity(mI);
于 2013-01-15T11:53:32.963 に答える