2009-12-28 11 views

risposta

7

Questo è ciò che si può fare:

  • uso ApplicationManager.getForegroundProcessId()
  • uso ApplicationManager.getVisibleApplications() per ottenere tutte le applicazioni in esecuzione
  • uso ApplicationManager.getProcessId() per la ricerca per app di processo id
  • fare questo in TimerTask con periodo definito

    public class AppListenerApp extends Application { 
    int mForegroundProcessId = -1; 
    
    public AppListenerApp() { 
        Timer timer = new Timer(); 
        timer.schedule(mCheckForeground, 2000, 2000);      
    } 
    
    public static void main(String[] args) { 
        AppListenerApp app = new AppListenerApp(); 
        app.enterEventDispatcher(); 
    } 
    
    TimerTask mCheckForeground = new TimerTask() { 
        public void run() { 
         int id = getForegroungProcessID(); 
         if(id != mForegroundProcessId) 
         { 
          mForegroundProcessId = id; 
          String name = 
           getAppNameByProcessId(mForegroundProcessId); 
          showMessage(name); 
         } 
        }; 
    }; 
    
    private int getForegroungProcessID() { 
        return ApplicationManager.getApplicationManager() 
          .getForegroundProcessId(); 
    } 
    
    private String getAppNameByProcessId(int id) { 
        String result = null; 
        ApplicationManager appMan = 
           ApplicationManager.getApplicationManager(); 
        ApplicationDescriptor appDes[] = 
           appMan.getVisibleApplications(); 
        for (int i = 0; i < appDes.length; i++) { 
         if (appMan.getProcessId(appDes[i]) == id) { 
          result = appDes[i].getName(); 
          break; 
         } 
        } 
        return result; 
    } 
    
    private void showMessage(String message) { 
        synchronized (Application.getEventLock()) { 
         Dialog dlg = new Dialog(Dialog.D_OK, message, 
             Dialog.OK, null, Manager.FIELD_HCENTER); 
         Ui.getUiEngine() 
             .pushGlobalScreen(dlg, 1, UiEngine.GLOBAL_QUEUE); 
        } 
    } 
    } 
    
+0

Grazie per la risposta ... Piuttosto allora questo c'è qualsiasi API Listener o qualsiasi tipo di evento attraverso il quale avremo la corrente Richiamato primo piano di applicazione. –

+0

Se è la tua applicazione, puoi sempre utilizzare http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/system/Application.html#activate%28%29 evento .. ma negli altri casi non vedo alcuna opzione. –

+0

Ok grazie per la tua risposta –

Problemi correlati