Я создаю приложение для своего маленького, потому что она любит телефон, но испортит мой рабочий стол. Я делаю мое приложение с помощью NDK и у меня есть следующие ....Prevent Home Button Press Android NDK
static int32_t handle_input(struct android_app* app, AInputEvent* event) {
if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY)
{
int key_val = AKeyEvent_getKeyCode(event);
switch(key_val){
case AKEYCODE_BACK:
LOGI("Back Button hit");
break;
case AKEYCODE_HOME:
LOGI("HOME HIT");
break;
}
LOGI("Input Recieved %d", key_val);
}
return 1;
}
Но когда я нажимаю кнопку назад, а затем кнопку домой, я вижу ...
I/native-activity(24450): Back Button hit
I/native-activity(24450): Input Recieved 4
I/native-activity(24450): Back Button hit
I/native-activity(24450): Input Recieved 4
I/ActivityManager( 278): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 278
Есть разрешение или что-то, что я могу дать, чтобы позволить мне поймать кнопку дома? Похоже, что должно быть в этом тестовом классе ...
TEST_F(KeyboardInputMapperTest, Process_SimpleKeyPress) {
const int32_t USAGE_A = 0x070004;
const int32_t USAGE_UNKNOWN = 0x07ffff;
mFakeEventHub->addKey(DEVICE_ID, KEY_HOME, 0, AKEYCODE_HOME, POLICY_FLAG_WAKE);
Вы укоренены? Благодаря доступу к корню я мог бы что-то написать для вас. – NightSkyCode
Я пытаюсь сделать это без корня, однако, мой эмулятор укоренен, поэтому я мог бы его там. Будет ли это связано с редактированием InputDispatcher.cpp? – Jackie
Вы правы. Однако без root теперь можно это сделать. Вам придется подумать о чем-то умном, я полагаю. – NightSkyCode