2015-04-07 4 views
0

Я использую эту функцию для моделирующих кодов клавиша:Simulate скан для всех приложений

public static void simulateKey(final int KeyCode) { 

    new Thread() { 
     @Override 
     public void run() { 
      try { 

       Instrumentation inst = new Instrumentation(); 
       inst.sendKeyDownUpSync(KeyCode); 
      } catch (Exception e) { 
       Log.e("Exception when sendKeyDownUpSync", e.toString()); 
      } 
     } 

    }.start(); 
} 

Но я хочу, чтобы использовать его для всех приложений. Например, если приложение A имитирует некоторый код ключа в фоновом режиме, он должен работать, пока приложение B сверху.

+1

Его невозможно Я испугался. Каждое приложение работает в собственной песочнице. – Stan

+0

Но я могу показывать сообщения с тостами или начинать с другого приложения, в чем разница? – Shockelduck

+0

Разница в том, кто находится под контролем. –

ответ

0

Это невозможно, по уважительным причинам. Вы не хотите, чтобы приложение одного человека просто нажимало кнопки другого приложения. Он может щелкнуть «опубликовать мои личные фотографии всем моим контактам», для всего, что вам известно ...
Даже без этого макет целевого приложения может измениться с обновлением; он может щелкнуть по другой кнопке или щелкнуть по месту, где больше нет кнопки.

Что вы можете сделать, это использовать Intent. Используя намерения, принимающее приложение принимает или не принимает меры. Кроме того, обновление макета не изменит прием намерения.
Возможно, приложение, которое получает намерение, изменяет и обрабатывает намерение иначе или вообще не работает; но по крайней мере тогда он делает это нарочно.

+0

Как использовать Intent для передачи данных без повторного открытия приложения? – Shockelduck

+0

'Intent' - это единственная специальная функция AOS, предназначенная для таких задач, как вы упомянули, - передача данных между приложениями, запуск других приложений, но НЕ КОНТРОЛЬ других приложений. И «Toast» просто разделяет экран и ничего больше. – Stan

Смежные вопросы