Intereting Posts
Проблема с датчиком приближения Android только в устройствах Samsung Как настроить пользовательский шрифт для всего приложения на Android? Socialauth android ResourceNotFound Как показать неопределенный индикатор выполнения при нажатии кнопки «Обновить» в ActionBarSherlock? Можно ли использовать приложение HTTP REST API для чата? Почему эмулятор очень медленный в Android Studio? API YouTube для Android: проигрыватель YouTubePlayerFragment Связаться с адаптером синхронизации в android Как интегрировать Paypal в приложение для Android? Боковой экран навигации ActionBarSherlock В чем разница между начальным / конечным маржем Android и правым / левым? Android Nougat PopupWindow showAsDropDown (…) Гравитация не работает Почему «Избегайте перечислений, где вам нужны только инты», удалены из подсказок производительности Android? OnClickListener на представлениях внутри настраиваемого ScrollView Как проверить, установлен ли AlarmManager уже установленный будильник?

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

Я хочу показать некоторую информацию в середине вызова на этом экране, например, информацию о погоде или обновлениях на 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"/>