android:覆盖来电屏幕

时间:2012-06-06 11:59:21

标签: android screen override phone-call

我想在来电屏幕上添加一些附加信息。在我的应用程序中,我正在检查PHONE_STATE和RINGING,我正在调用一个活动。在此活动中,我将设置如下文本视图。

按预期工作。文本将添加到来电屏幕 问题是:

如果我在我的应用程序中,即在我的应用程序的视图中,并且如果有来电,则android传入窗口会消失。我的应用程序窗口显示在顶部,应该覆盖传入呼叫窗口的文本视图也可见。

请解释一下这种行为。我该如何解决这个问题?

super.onCreate(savedInstanceState);
Log.i(TAG,"oncreate");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.incomingcallscreen);
TextView name = (TextView)findViewById(R.id.textView1);
name.setText(getIntent().getExtras().getString("NAME"));
incomingCallActivityContext = this;

,布局是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="250dip"
        android:src="@drawable/icon"
        android:text="CALLER NAME"
        android:textSize="35sp"
        android:textColor="@color/WHITE"
        android:layout_gravity="center_horizontal"
        android:windowAnimationStyle="@android:style/Animation.Translucent"
        android:windowBackground="@android:color/transparent"
        android:windowIsTranslucent="true" />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

android:launchMode="singleInstance"放入您的清单活动中。
释(小)
“singleTask”和“singleInstance”模式在一个方面也各不相同:“singleTask”活动允许其他活动成为其任务的一部分。它始终是其任务的根源,但其他活动(必然是“标准”和“单一活动”)可以启动到该任务中。 另一方面,“singleInstance”活动不允许其他任何活动成为其任务的一部分。它是任务中唯一的活动。如果它启动另一个活动,则该活动被分配给另一个任务 - 就像FLAG_ACTIVITY_NEW_TASK在意图中一样。

Full Explaination can be found here