2011-09-21 39 views
0

我有一個應用程序,我將使用它阻止前臺應用程序。這意味着當我點擊主屏幕中的任何圖標時,它不應該啓動。我的應用程序正在後臺運行,並將在手機開機時啓動。所以我檢查了啓動時的自動運行。這在模擬器中工作正常,但在運行鱈魚文件後不能在設備中工作。我正在運行黑莓風暴。在這裏,我把我的代碼:應用程序不在設備中工作,但在黑莓模擬器中工作

public class BlockApplication extends Application 
{ 
    int mForegroundProcessId = -1; 

public BlockApplication() { 
    Timer timer = new Timer(); 
    timer.schedule(mCheckForeground, 1000, 1);      
} 


public static void main(String[] args) { 
    BlockApplication app = new BlockApplication(); 
    app.enterEventDispatcher(); 
} 


TimerTask mCheckForeground = new TimerTask() { 
    public void run() { 
     int id = getForegroungProcessID(); 
     ApplicationManager appMan = ApplicationManager.getApplicationManager(); 
    appMan.requestForegroundForConsole(); 
     KeyEvent inject = new KeyEvent(KeyEvent.KEY_DOWN, Characters.ESCAPE, 0); 
     inject.post(); 

    }; 
}; 


private int getForegroungProcessID() 
{ 
    return ApplicationManager.getApplicationManager().getForegroundProcessId(); 
} 

} 

任何人都可以幫助嗎?問題是什麼?

回答

1

只是一個想法 - 你有沒有爲你的應用程序設置權限?例如,您的應用使用KeyEvent注入 - 這是潛在的危險,因此需要用戶的明確許可。在設備選項中(在我的Storm 9530模擬器上,它在'選項' - >'安全選項' - >'應用程序權限' - >選擇你的應用程序 - >'編輯權限'菜單項)KeyEvent注入permissoin命名爲「輸入模擬」。也可以使用編程方式爲應用程序設置權限(請檢查ApplicationPermissionsManager類,也可以查看JDE附帶的ApplicationPermissionsDemo項目)。

請注意,在模擬器上模擬權限框架是不可能的(模擬器的行爲就好像所有權限始終設置爲「允許」),因此要測試您需要真實設備的權限。

+0

是的,當我的手機啓動時,我按照您所說的方式設置了許可。但是我仍然沒有得到理想的結果。 –

+0

對不起,我只是沒有其他的想法.. –

+1

所以這個解決了嗎?我有點驚訝,因爲你的第一個評論說這個問題與未設置的「輸入模擬」權限無關。 –

相關問題