Показать информацию в середине вызова

Я хочу показать некоторую информацию в середине вызова на этом экране, например, информацию о погоде или обновлениях на Facebook, может ли кто-нибудь мне помочь.

См. Снимок экрана ниже, которое я хочу.

Введите описание изображения здесь

заранее спасибо

Solutions Collecting From Web of "Показать информацию в середине вызова"

Проверьте этот ответ переполнения стека. В этом ответе вы можете увидеть тост, показывающий разные состояния вызовов. Вместо этого тоста вы можете создать собственный тост и показать свои обновления с помощью этого тоста.

Если вы хотите показать активность вместо тоста, попробуйте этот код в вашем CustomPhoneStateListener

public class CustomPhoneStateListener extends PhoneStateListener { ActivityManager activityManager; Intent i1; public CustomPhoneStateListener(Context context) { super(); this.context = context; i1 = new Intent(context, TelephoneyWithoutToastActivity.class); i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: //when Idle ie no call Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_OFFHOOK: //when Off hook ie in call //Make intent and start your service here Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_RINGING: ActivityManager localActivityManager = (ActivityManager) this.context.getSystemService("activity"); for (String str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString();; str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString()) { if ((!str.contains("com.android.phone.InCallScreen"))) continue; Log.d("IncomingCallPlus", "*****************************************************"); context.startActivity(i1); return; } default: break; } } } 

Добавьте это в свою активность для активации касания на экране вызова по умолчанию.

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

Эта функция будет касаться как экрана вызывающего абонента, так и всплывающего окна

 public void addInvitePopup(final String number, Context c) { //check if pref is ok with invite in call // if(!Preferences.getInstance(c.getInviteInCall())){return ; } // sets the WindowManager WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); params.x = 250; params.height = LayoutParams.WRAP_CONTENT; params.width = LayoutParams.WRAP_CONTENT; params.format = PixelFormat.TRANSLUCENT; final Context ct = c; params.gravity = Gravity.TOP; params.setTitle("Testing"); LinearLayout ly = new LinearLayout(c); ly.setOrientation(LinearLayout.VERTICAL); Button inviteButton = new Button(c); inviteButton.setClickable(true); inviteButton.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.ic_launcher)); inviteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), "adding to blacklist..", Toast.LENGTH_LONG).show(); v.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.images)); v.setClickable(false); // sendMessage(v, number); //Track this event: //MixPanelTracking.setPropKeyValue(getApplicationContext(), null, null, "Add friend - During Call"); } }); inviteButton.setWidth(30); inviteButton.setHeight(30); // inviteButton.setLayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, // WindowManager.LayoutParams.WRAP_CONTENT); ly.addView(inviteButton); wm.addView(ly, params); // wm.addView( inviteButton, params); Log.i("TTT", "after add view"); } 

Добавить это разрешение в файл манифеста

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>