BlackBerry - фоновое приложение для слушания запускается и приоритетное приложение

Я хотел бы создать фоновое приложение, которое будет слушать, какие приложения запущены и что перемещено в передний план.

Ответьте, Не ли вопрос ясен, объяснит снова.

Спасибо

6
задан Maksym Gontar 28 December 2009 в 10:10
поделиться

1 ответ

Это то, что вы можете сделать:

  • использовать ApplicationManager.getForegroundProcessId()
  • использовать ApplicationManager.getVisibleApplications(), чтобы получить все запущенные приложения
  • использовать ApplicationManager. getProcessId() для поиска приложения по идентификатору процесса
  • сделайте это в TimerTask с заданным периодом

    public class AppListenerApp расширяет Application {
    int mForegroundProcessId = -1;
    
    public AppListenerApp() {
     Таймер = новый таймер();
     timer.schedule(mCheckForeground, 2000, 2000); 
    }
    
    public static void main(String[] args) {
     AppListenerApp app = новое AppListenerApp();
     app.enterEventDispatcher();
    }
    
    TimerTask mCheckForeground = new TimerTask() {
     public void run() {
     int id = getForegroungProcessID();
     if(id != mForegroundProcessId)
     {
     mForegroundProcessId = id;
     Имя строки = 
     getAppNameByProcessId(mForegroundProcessId);
     showMessage(name);
     }
     };
    };
    
    private int getForegroungProcessID() {
     вернуть ApplicationManager.getApplicationManager()
     .getForegroundProcessId();
    }
    
    приватная строка getAppNameByProcessId(int id) {
     Результат строки = ноль;
     ApplicationManager appMan = 
     ApplicationManager.getApplicationManager();
     ApplicationDescriptor appDes[] = 
     appMan.getVisibleApplications();
     for (int i = 0; i < appDes.length; i++) {
     если (appMan.getProcessId(appDes[i]) == id) {
     result = appDes[i].getName();
     перерыв;
     }
     }
     Результат возврата;
    }
    
    private void showMessage(Строковое сообщение) {
     синхронизированный (Application.getEventLock()) {
     Dialog dlg = новый Dialog(Dialog.D_OK, сообщение, 
     Dialog.OK, null, Manager.FIELD_HCENTER);
     Ui.getUiEngine()
     .pushGlobalScreen(dlg, 1, UiEngine.GLOBAL_QUEUE);
     }
    }
    }
    
7
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: