安卓NDK : How to override onBackPressed in NativeActivity without java?

标签 android android-ndk native-code

我的应用程序完全使用 C/C++ 使用 NativeActivity 编写,它没有 Java 代码(基于“native-activity”NDK 示例)。按“后退”按钮将其关闭(破坏 Activity ),但我需要此按钮的其他行为,因为我有自己的 UI 和菜单,它们通过 OpenGL 显示。

As I read ,为了改变“后退”按钮的行为,我需要覆盖 Java Activity 类的 onBackPressed() 方法。但是我不使用 Java,我可以从 C/C++ 访问这个方法来覆盖它吗?

如果不是,是否有另一种方法可以使用 NDK 处理“后退”按钮,无需 java 代码?

最佳答案

已解决:为了防止默认的“后退”按钮行为,在处理按键事件时返回 1 就足够了:

int32_t app_handle_event(struct android_app* app, AInputEvent* event) {
    if (AKeyEvent_getKeyCode(event) == AKEYCODE_BACK) {
        // actions on back key
        return 1; // <-- prevent default handler
    };
    // ...
    return 0;
}

关于安卓NDK : How to override onBackPressed in NativeActivity without java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130618/

相关文章:

android - 如何在 Android 的 VideoView 中隐藏控件?

android - System.loadLibrary(...) 在我的情况下找不到 native 库

eclipse - 如何在linux中eclipse上的android项目之前编译.sh

winapi - CreateStdDispatch 如何知道要调用哪个方法?

java - 我在 ListView 中有一个自定义单元格。如何使其在触摸时突出显示?

java - 比较 Formate 为 yyyy-MM-dd HH :mm:ss in Android 的两个日期和时间

android - 所有 EditText 框中的非 Activity InputConnection 警告

android - Unicode 和安卓 NDK

安卓网络实时时钟

c++ - 如果有多个以太网适配器,您个人如何通过 MAC 地址识别工作站?