Клавиша возврата системы блокировки Android Window ManagerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Клавиша возврата системы блокировки Android Window Manager

Сообщение Anonymous »

У меня есть плавающее представление, такое как пузырь чата Facebook, но, в отличие от него, мое наложение имеет EditText и должно быть фокусируемым.

Вот мой код плавающего представления< /p>

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

        //Inflate the floating view layout we created
mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_widget_layout, null);

//Add the view to the window.
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);

//Specify the view position
params.gravity = Gravity.TOP | Gravity.START;        //Initially view will be added to top-left corner
params.x = 0;
params.y = 100;

//Add the view to the window
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mFloatingView, params);
Все почти нормально, но есть проблема. Когда я создаю наложение из service, системная кнопка «Назад» не работает. Если я использую системные кнопки FLAG_NOT_FOCUSABLE; «домой», «последние» и «обратные» работают как положено. Я провел небольшое исследование в SO и обнаружил, что это проблема безопасности, поэтому начал искать альтернативные решения и обнаружил это, а затем изменил свой код

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

// Wrapper for intercepting System/Hardware key events
ViewGroup wrapper = new FrameLayout(this) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
Log.v("Back", "Back Key");
return true;
}
return super.dispatchKeyEvent(event);
}
};

//Inflate the floating view layout we created
mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_widget_layout, wrapper);

//Add the view to the window.
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);

//Specify the view position
params.gravity = Gravity.TOP | Gravity.START;        //Initially view will be added to top-left corner
params.x = 0;
params.y = 100;

//Add the view to the window
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mFloatingView, params);
Теперь я могу вернуть нажатие из моего плавающего представления, но как я могу передать это событие (обратное нажатие) в приложение переднего плана (другое приложение, не мое)? Я нашел это, но мне это не помогло

Если кто-то сможет мне помочь или хотя бы подсказать, буду признателен
Сводка

У меня есть наложение, оно должно быть фокусируемым, но кнопка обратного нажатия не работает, когда она включена. сосредоточен, как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/464 ... m-back-key
Ответить

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

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

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

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

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