Я получил решение.
Скорее, чтобы переопределить экран входящих вызовов, сделайте ниже двух вещей. который позволит вам получить доступ к кнопке «Принять и отклонить», а также отобразить экран над экраном вашего входящего вызова.
(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) Сделайте прозрачность макета вашей деятельности (которая выйдет выше экрана вызова), напишите ниже код в манифесте
<activity android:name=".IncomingCallActivity"
android:theme="@android:style/Theme.Translucent">
</activity>
( 4) В манифесте добавьте свой широколистный приемник
<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);
Приветствия!
Дайте мне знать, если вы столкнулись с какой-либо проблемой!