Intereting Posts
Как хранить дату и время в SQLite Слияние двух растровых изображений в android Преобразование Html и установка текста в Textview Как добавить элементы на счетчик динамически в android? Как проверить текст редактирования, чтобы позволить пользователю вводить целое число и плавать для поля цены в android Как обнаружить поддельные GPS-координаты в Android? Загрузка веб-сайта в строку Пока не удалось достичь Gapless аудио-цикла на Android Как настроить временной интервал кнопки long / delay, нажатой в android Как выйти из цикла while через определенное время? DELETE_FAILED_INTERNAL_ERROR Ошибка при установке APK Как перенаправить вывод моего журнала с logcat на SD-карту на устройстве Android? Как программно проверить доступность интернет-соединения с помощью jquery Запись, сохранение и воспроизведение видео в Android Android – мягкая клавиатура выталкивает макет моей активности из экрана

Приложение Android-Telephony, которое фокусируется на входящих вызовах

Я разрабатываю специальное приложение для телефонии, которое может принимать вызовы. Использование этого кода для обработки входящего вызова https://code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java

К сожалению, мое приложение теряет фокус на входящем звонке.

Это было частичное решение для исходящих вызовов Android-телефона, которое фокусируется на исходящем и входящем телефоне.

Как насчет входящих звонков? Как я могу сосредоточиться в своем пользовательском приложении?

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

Поскольку ссылка, сделанная вами об исходящих звонках, приемлема, вы можете поместить мероприятие перед экраном входящих вызовов вскоре после его отображения. Трудность в этом заключается в том, что состояние вызова изменится на «RINGING», а затем «OFFHOOK», но телефон не отображает InCallScreen, когда они транслируются.

Как и сообщение, на которое вы ссылаетесь, это решение фактически не встраивает функцию телефона в приложение (например, веб-просмотр для веб-браузера), а скорее размещает активность перед InCallScreen вскоре после ее отображения.

Для входящих звонков вам необходимо отложить запуск своей деятельности, например, в этом сообщении:

Android – настраиваемый новый экран входящих вызовов

Вы можете поместить что-нибудь на экран в точку, сложная часть определяет время задержки, чтобы оно соответствовало вашим потребностям (достаточно медленно, чтобы у InCallScreen появилась возможность запуска, но достаточно быстро, чтобы быть минимально разрушительной).

Кроме того, даже расширение AOSP не поможет, если у вас нет доступа к каждому физическому устройству, где это будет использоваться для их root или установки на них пользовательской сборки. Доступ к функциям PhoneApp недоступен для не-системных приложений (пакет com.android.phone).

Упомяните нижнего широковещательного приемника в файле manifest.xml.

<receiver android:name="com.example.incomingcall.IncomingCallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> 

IncomingCallReceiver.java:

 public class IncomingCallReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { Thread thread = new Thread(){ private int sleepTime = 400; @Override public void run() { super.run(); try { int wait_Time = 0; while (wait_Time < sleepTime ) { sleep(100); wait_Time += 100; } }catch (Exception e) { Toast.makeText(context, "Error Occured Because:" + e.getMessage(), Toast.LENGTH_SHORT).show(); } context.startActivity(new Intent(context,CustomActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } }; thread.run(); } } } }