我有一个应用程序,我将阻止前台应用程序。这意味着当我点击主屏幕中的任何图标时,它不应该启动。我的应用程序在后台运行,并将在手机启动时启动。所以我在启动时检查了自动运行。这在模拟器中工作正常,但在运行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();
}
}
任何人都可以帮忙吗?有什么问题?
答案 0 :(得分:1)
只是一个想法 - 你有没有为你的应用设置权限?
例如,您的应用使用KeyEvent
注入 - 这可能是危险的,因此需要用户的明确许可。在设备选项中(在我的Storm 9530模拟器上,它位于'选项' - >'安全选项' - >'应用程序权限' - >选择您的应用程序 - >'编辑权限'菜单项)permissoin for { {1}}注入被命名为“输入模拟”。也可以使用编程方式为应用程序设置权限(为此检查KeyEvent
类,也可以查看JDE附带的ApplicationPermissionsDemo项目。)
请注意,无法在模拟器上模拟权限框架(模拟器就像所有权限始终设置为“允许”一样),因此要测试权限,您需要真正的设备。