Android Activity Activity Back Stack Scack с запускуйте = "Singletask" и CallredeRectionServiceAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Activity Activity Back Stack Scack с запускуйте = "Singletask" и CallredeRectionService

Сообщение Anonymous »

Я разрабатываю нативное приложение React с функцией Android-специфической, которая обнаруживает вызовы по конкретному номеру обслуживания клиентов. Когда пользователь набирает *611, вызов перехватывается, прекращается, а в приложении запускается исходящая каленатвисность . Это действие представляет меню с глубокими ссылками, которые при нажатии на нажатие перейдите к MainActivity (где реагирует нативные жизни). Компонент «Связывание react» автоматически обрабатывает глубокую ссылку и перемещается к правильной части приложения. out tostercallservice.java

Код: Выделить всё

package com.example.callredirection;
import android.content.Intent;
import android.net.Uri;
import android.telecom.CallRedirectionService;
import android.telecom.PhoneAccountHandle;
import android.util.Log;

import androidx.annotation.NonNull;

public class OutgoingCallService extends CallRedirectionService {
@Override
public void onPlaceCall(
@NonNull Uri handle,
@NonNull PhoneAccountHandle initialPhoneAccount,
boolean allowInteractiveResponse
) {
String phoneNumber = handle.getSchemeSpecificPart();
if (phoneNumber.equals("*611")) {
Intent intent = new Intent(this, OutgoingCallActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("phoneNumber", phoneNumber);
startActivity(intent);
cancelCall();
Log.d("OutgoingCallService", "The call was cancelled");
}  else {
placeCallUnmodified();
}
}
}
OutgoingCallActivity.java
Это действие имеет метод SendmessageToApp , который получает глубокую ссылку от выбранного параметра пользователя:

Код: Выделить всё

public void sendMessageToApp(String deeplink) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(deeplink));
mContext.startActivity(intent);
} catch (Exception e) {
Log.e("ERROR_SEND_MESSAGE", e.toString());
}
}
Примечание: sendmessageToApp - это метод веб -интерфейса, поэтому контекст передается конструктору и назначен Mcontext.
Весь этот поток работает в большинстве случаев. Когда приложение закрыто, и я набираю *611, вызов перехватывается, появляется revingcallactivity , и когда я выбираю опцию, оно перемещается по правильной глубокой ссылке в приложении. Если я нажимаю на собственную кнопку Android Back, она возвращается в меню исходящего калтуальности , которое является желаемым поведением. Если приложение находится в фоновом режиме, и я набираю *611, исходящее количество Callactivity открывается в свое меню. Когда я нажимаю на опцию, он правильно перемещается в связанную глубокую ссылку в приложении, но когда я нажимаю назад, он не возвращается к исходящей калтуальности . Вместо этого он возвращается в приложение Phone , из которого был сделан вызов. Различные флаги для sendmessageToApp () намерения, например:

Код: Выделить всё

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
< /code>
, а также: < /p>
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
Тем не менее, они не дают ожидаемого результата.
  • Я также попытался заставить обратную навигацию из MainActivity с использованием метода OnbackPressed :

Код: Выделить всё

@Override
public void onBackPressed() {
if (getIntent().getBooleanExtra("fromOutgoingCall", false)) {
Intent intent = new Intent(this, OutgoingCallActivity.class);
startActivity(intent);
} else {
super.onBackPressed();
}
}
и запуск mainActivity от OpingCallActivity нравится это:
Intent intent = new Intent(mContext, MainActivity.class);
intent.putExtra("fromOutgoingCall", true);
< /code>
Этот подход имеет неожиданное поведение, а иногда и полностью закрывает приложение. < /p>
Надеюсь, кто -то сможет мне помочь. Спасибо заранее!

Подробнее здесь: https://stackoverflow.com/questions/797 ... lredirecti
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»