我正在开发一个永久的主屏幕覆盖对话框,因为在按下主页按钮后服务启动活动时有 5 秒的延迟,我也被迫将我的活动代码放入服务中。我的应用程序运行良好,但当用户按下主页或返回按钮时,覆盖仍保留在屏幕上。有什么方法可以检测用户是否在我可以调用的服务.class 中按下主页或返回selfStop()
并从屏幕上删除视图?在一个活动中,我可以使用 onStop 检查是否按下了主页按钮,但由于onStop()
服务中没有我被卡住了。
有什么方法可以让主页按钮按预期做出反应?
我正在开发一个永久的主屏幕覆盖对话框,因为在按下主页按钮后服务启动活动时有 5 秒的延迟,我也被迫将我的活动代码放入服务中。我的应用程序运行良好,但当用户按下主页或返回按钮时,覆盖仍保留在屏幕上。有什么方法可以检测用户是否在我可以调用的服务.class 中按下主页或返回selfStop()
并从屏幕上删除视图?在一个活动中,我可以使用 onStop 检查是否按下了主页按钮,但由于onStop()
服务中没有我被卡住了。
有什么方法可以让主页按钮按预期做出反应?
移动返回和主页按钮在服务类中运行良好。
public class MyFooterService extends Service{
View myview;
WindowManager wm;
FrameLayout wrapper;
public MyFooterService() {
}
@Override
public void onCreate() {
Log.d(TAG, "onCreate called");
LayoutInflater li = (LayoutInflater)
getSystemService(LAYOUT_INFLATER_SERVICE);
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
final WindowManager.LayoutParams params = new
WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
90, //height of ur layout
WindowManager.LayoutParams.TYPE_PHONE,
0,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.BOTTOM ;
params.x = 0;
params.y = 0;
wrapper = new FrameLayout(this) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
// handle the back button code;
return true;
}
return super.dispatchKeyEvent(event);
}
//if pressed home key,
public void onCloseSystemDialogs(String reason) {
//The Code Want to Perform.
System.out.println("System dialog " + reason);
if (reason.equals("homekey")) {
// handle home button
}
}
};
myview = li.inflate(R.layout.my_footer, wrapper); // here set into your own layout
wm.addView(myview, params);
}
}