android:如何在接听电话后恢复我的应用程序

时间:2014-04-03 14:29:15

标签: android

我有一个正在运行的应用程序,每秒打印一个数字。现在如果我按下HOME按钮,这个应用程序将继续在后台工作,如果我将通过长按HOME返回并按下应用程序,我将看到即使在应用程序进入的时间内也会出现打印背景。到现在为止还挺好。 现在,我在这些数字打印输出中以编程方式在我的应用程序中拨打电话。 呼叫窗口打开,号码正在拨打,现在我正在尝试将BACK返回到我已经处于活动状态的应用程序而我不能,我所能做的只是打开一个新的活动,这将显示(这意味着所有打印都被删除) 。 所以我的问题是:不是使用会打开新活动的startActivity(),而是如何在后台返回我的活动?

到目前为止,这是我的代码:

开始通话,等待1秒钟并开始新的运行(我希望能让我回来):

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+phone_number.toString().trim()));
startActivity(intent);


Runnable showDialogRun = new Runnable() {
            public void run(){
                Intent i = getBaseContext().getPackageManager()
                        .getLaunchIntentForPackage(
                                getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
};
Handler h = new Handler();
h.postDelayed(showDialogRun, 1000);

现在,如果我将删除标志'FLAG_ACTIVITY_CLEAR_TOP',则不会发生任何事情,当它进入呼叫窗口时,应用程序根本不会返回。

1 个答案:

答案 0 :(得分:0)

不要设置新任务标志

删除此行

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

并设置android:launchMode =" singleTop"在活动清单中。因此,当您启动活动时,现有的活动实例将被置于最前面。

android:launchMode="singleTop"