Android - передача ключей запущенной родительской активности

У меня есть действие A, где я запускаю другое действие через намерение. Но моя цель - передать ключи в Activity1 вместо обработки в Activity2. Возврат false из onkeydown или onkeyup бесполезен. Как я могу этого добиться?

Class activity1: Activity(){

Override oncreate(){
    // set view
    // launch activity2
    launchactivy2()
}

fun launchactivy2(){
    val playIntent = Intent("android.intent.action.VIEW")
    playIntent.putExtra("position", "top")
    playIntent.component = ComponentName(
            "com.myapp.package”,
        "com.myapp.package.activity2”
    )
    context.startActivity(playIntent)
    }

fun onKeyDown(){
    // Handle keys here
} 
}

моя активность2 выглядит так, как показано ниже, где я не обрабатываю ключи, а перенастраиваю ложь.

Class activity2: Activity(){
Override oncreate(){
    // set view
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    super.onKeyDown(keyCode, event)
    return false
}
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    super.onKeyUp(keyCode, event)
    return false
}
}

Пробовал возвращать только false вместо супервызова из методов onKey.. и бесполезно. Можно ли этого добиться?


person Anil Arrabole    schedule 25.06.2021    source источник
comment
Почему Activity1 не может переопределить те же методы, что и в activity2?   -  person cutiko    schedule 25.06.2021
comment
@cutiko Не имеет контроля над Activity2, за исключением keyHandling   -  person Anil Arrabole    schedule 25.06.2021
comment
Я прошу activity1 , и как вы можете не контролировать, если вы переопределяете методы на activity2? Вы буквально можете писать там код, как у вас нет контроля?   -  person cutiko    schedule 25.06.2021
comment
Да, почему бы просто не вызвать метод onKeyDown() для Activity1 в Activity2? Или лучше сделать Activity2 расширяющим Activity1.   -  person Darkman    schedule 25.06.2021
comment
Они из разных приложений, мне не принадлежат.   -  person Anil Arrabole    schedule 25.06.2021
comment
Ах, тогда, если это из разных приложений, вы не можете этого сделать. Единственное, что вы можете сделать, это создать событие с помощью намерений в одном приложении и прослушать это событие в другом. Это не гарантированная доставка, но это все, что вы можете сделать. developer.android.com/training/basics/intents   -  person JPM    schedule 25.06.2021


Ответы (1)


Можно ли этого добиться?

Нет. Каждое действие — это отдельное окно; ключевые события идут в окно.

Самое простое решение — иметь одно действие, а не два.

person CommonsWare    schedule 25.06.2021
comment
можете ли вы также проверить мой пост main coroutine2 java lang nullpointerexception в viewmo"> stackoverflow.com/questions/68113141/ - person sashabeliy; 25.06.2021