2012-09-03 44 views
0

好的。我發現很難說清楚。讓我嘗試。當我在BroadcastReceiver中打開活動時隱藏Android InCallScreen

我正在使用廣播接收器來調用每個呼叫。

<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

回答

0

我建議閱讀本article。它擁有大量有關Android中的活動,任務,應用程序和流程的信息。

我的猜測是你的AttendActivity有默認的任務關係。這意味着,如果顯示此活動,那麼您的整個任務(最有可能是您所有應用程序的所有活動)都將顯示在前面。

您可以更改此行爲。您需要在Manifest的活動中使用android:taskAffinity。

舉個例子,你可以把android:taskAffinity =「」作爲AttendActivity的清單。通過這種方式,它將被帶到前面,它不會拖動整個應用程序。

相關問題