在Android中的Home Button需要帮助

时间:2011-05-19 05:42:15

标签: android onkeydown android-homebutton

大家好我想拦截我的主页按钮 我想要的是每当我按下一个主页按钮我想显示一个警告对话框你确定要退出。如果是,则完成活动,否则什么也不做。 我必须知道 当我们按Home Button时,按顺序执行以下回调。

onSaveInstanceState(Bundle outState)

onPause()

onStop()

所以我有overRide onSaveInstanceState方法并在那里设置我的警告对话框代码,但它给了我对话框的异常。请帮助朋友。引导我一个小时......关于它。

更新:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
boolean flag = displayAlertDialog();
        if(flag){
             this.finish();
         super.onSaveInstanceState(savedInstanceState);
        }
}  

displayAlertDialog方法:

private boolean isExit = false;
public boolean displayAlertDialog()
    {
        //final boolean flag=true;
        int a = 0;
        AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("Are you sure you want to Exit?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = true;
            }

        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = false;
                dialog.cancel();
            }
        });
        alt_bld.show();
    return isExit;

    }

3 个答案:

答案 0 :(得分:3)

你无法在主页按钮上打开对话框。但您可以通过用户选择主页或您的活动等操作来打开主页按钮上的任何活动。

答案 1 :(得分:1)

当按下HOME键时,AFAIK KeyCode.KEYCODE_HOME永远不会传播到Activty / Dialog,在框架中拦截HOME键以保证注册的主屏幕/活动" android.intent.category.HOME"总是引起关注。

如果在应用程序中允许拦截HOME键,则恶意应用程序可能会阻止用户退出应用程序并使用电话功能。

答案 2 :(得分:0)

试试这个伴侣......

 @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {    
         Log.d(this.getClass().getName(), "home button pressed");   
      }  
       return super.onKeyDown(keyCode, event);
     }