2011-09-21 2 views
0

포 그라운드 응용 프로그램을 차단할 응용 프로그램이 하나 있습니다. 홈 화면에서 아무 아이콘이나 클릭하면 시작할 수 없습니다. 그리고 내 응용 프로그램은 백그라운드에서 실행되며 전화가 부팅을 시작할 때 시작됩니다. 그래서 시작시 자동 실행을 확인했습니다. 이것은 시뮬레이터에서는 정상적으로 작동하지만 cod 파일을 실행 한 후에는 장치에서 작동하지 않습니다. 나는 Blackberry Storm에서 뛰고있다. 여기에 내 코드를 걸었습니다.응용 프로그램이 장치에서 작동하지 않지만 블랙 베리의 시뮬레이터에서 작동 중

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 주사에 대한 퍼미션은 "입력 시뮬레이션". 프로그래밍 방식으로 응용 프로그램에 대한 사용 권한을 설정할 수도 있습니다 (이 경우 ApplicationPermissionsManager 클래스를 확인하고 JDE에 포함 된 ApplicationPermissionsDemo 프로젝트를 검토 할 수도 있음).

시뮬레이터에서 권한 프레임 워크를 시뮬레이트하는 것은 불가능합니다 (시뮬레이터는 모든 권한이 항상 "허용"으로 설정된 것처럼 동작합니다). 따라서 실제 장치가 필요한 사용 권한을 테스트하십시오.

+0

예, 내 전화가 시작되면 내가 말하는 방식으로 권한을 설정합니다. 하지만 여전히 원하는 결과를 얻지 못하고 있습니다. –

+0

죄송합니다. 다른 아이디어가 없습니다 .. –

+1

이렇게 해결 되었습니까? 귀하의 첫 번째 의견에 문제가 설정되지 않은 "입력 시뮬레이션"권한과 관련이 없다고 말하면서 약간 놀랍습니다. –

관련 문제