0

Ok。はっきり言って難しいと思います。私が試してみましょう。

すべての呼び出しで呼び出されるブロードキャスト レシーバーを使用しています。

<receiver
    android:name="com.example.receiveCall"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

そして、onReceive メソッドでは、上でアクティビティを開始しています。

    @Override
    public void onReceive(final Context context, Intent intent) {

            Handler mHandler = new Handler();
            AttendActivity.ctx = context;
            Runnable mUpdateTimeTask = new Runnable() {
                public void run() {
                    // do what you need to do here after the delay
//                  context.startService(new Intent(context, AutoAnswerIntentService.class));
                    context.startActivity(new Intent(context,
                            AttendActivity.class)
                            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

                }
            };
            mHandler.postDelayed(mUpdateTimeTask, 500);
        }       
    }

アプリが表示されていない場合、これは正常に機能します。ただし、アプリが表示されている場合。私のアクティビティは、InCallScreen の上に開きます。しかし、AttendActivity を閉じると。InCallScreen の代わりに私のアプリが表示されます。Incallscreen はその上にあります。

これを修正してください。望ましい出力

MyApp -> InCallScreen -> AttendActivity

現在の出力 InCallScreen -> MyApp -> AttendActivity

4

1 に答える 1

0

この記事を読むことをお勧めします。Android のアクティビティ、タスク、アプリケーション、およびプロセスに関する大量の情報があります。

私の推測では、あなたの AttendActivity にはデフォルトのタスク アフィニティがあると思います。これは、このアクティビティが表示された場合、タスク全体 (アプリのすべてのアクティビティである可能性が最も高い) が前面に表示されることを意味します。

この動作は変更できます。マニフェストのアクティビティで android:taskAffinity を実行する必要があります。

例として、マニフェストの AttendActivity に android:taskAffinity="" を配置できます。この方法で前面に移動すると、アプリケーション全体がドラッグされることはありません。

于 2012-09-06T02:46:37.690 に答える