您的应用存在影响终端设备功能的返回键失灵问题,不符合华为应用市场审核标准。

上架到华为应用商店,被打回
“您的应用存在影响终端设备功能的返回键失灵问题,不符合华为应用市场审核标准。”

这个意思是说游戏界面全屏后,看不到系统导航了吗?比如返回键等

这个应该怎么处理?

是不是没有监听cocos的cc.SystemEvent.EventType.KEY_UPk这个事件处理cc.macro.KEY.back,然后调起华为sdk的退出游戏,或者自己处理的退出游戏

不知道华为是不是这个意思,我以为是没有显示底部的系统导航条

因为cocos重写了onclickBack,所以如果游戏不处理,点返回就没有反应,很多渠道都要求要有退出游戏功能的

1赞

public boolean dispatchKeyEvent(KeyEvent event){
final AppActivity self = (AppActivity)Cocos2dxActivity.getContext();
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
//抬起才处理
if(event.getAction() == KeyEvent.ACTION_UP) {
//安卓弹框格式有问题, 机型不一致,UI的布局还不一致!!!
TextView title = new TextView(self);
title.setText(“提示”);
title.setPadding(0, 25, 0, 0);
title.setGravity(Gravity.CENTER);
title.setTextSize(25);
title.setTextColor(Color.WHITE);
AlertDialog.Builder builder = new AlertDialog.Builder(self);
AlertDialog dialog = builder.setCustomTitle(title)
.setMessage(“确定退出游戏?”)
.setPositiveButton(“是”, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
onBackPressed();
}
})
.setNegativeButton(“否”, null)
.show();
// AlertDialog dialog = builder.create();
Button btnPositive = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
Button btnNe = dialog.getButton(AlertDialog.BUTTON_NEGATIVE);
//设置按钮居中
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER;
layoutParams.setMargins(10,10,10,10);
layoutParams.width = 0;
layoutParams.weight = 500;
btnPositive.setLayoutParams(layoutParams);
btnNe.setLayoutParams(layoutParams);

            //修复部分机型,按钮布局的问题
            Window window = dialog.getWindow();
            window.setGravity(Gravity.CENTER);
            Display d = window.getWindowManager().getDefaultDisplay();
            WindowManager.LayoutParams p = window.getAttributes();
            Point size = new Point();
            d.getSize(size);
            p.width = size.x;
            window.setAttributes(p);
            //退出游戏-- js层退出游戏,会造成游戏进程成为僵尸进程,无法彻底杀掉!!
            /*this.runOnGLThread(new Runnable() {
                @Override
                public void run() {
                    String call = "ThirdMgr.onClickBack()";
                    Cocos2dxJavascriptJavaBridge.evalString(call);
                }
            });*/

        }
    }
    return super.dispatchKeyEvent(event);
}