Я получил решение.
Вместо того, чтобы переопределить экран входящего вызова, сделайте ниже две вещи.которая позволит вам получить доступ к кнопке принять и отклонить, а также отобразить экран над экраном входящего вызова.
(1) Сделайте один класс получателя:
public class MyPhoneReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null)
{
String state = extras.getString(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Intent i = new Intent(context, IncomingCallActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
(2) вашxml активности выглядит следующим образом:
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top"
android:gravity="top"
android:orientation="vertical"
android:windowAnimationStyle="@android:style/Animation.Translucent"
android:windowBackground="@android:color/transparent"
android:windowIsTranslucent="true"
(3) Сделайте макет вашей активности прозрачным (что будет выше экрана вызова), напишите следующий код в menifest
<activity android:name=".IncomingCallActivity"
android:theme="@android:style/Theme.Translucent">
</activity>
(4) В menifestдобавьте получателя широкого диапазона
<receiver android:name="MyPhoneReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" >
</action>
</intent-filter>
</receiver>
(5) добавьте приведенный ниже код в oncreate () IncomingCallActivity
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Cheers!
Дайте мне знать, если вы сталкиваетесьпроблема!