微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > Stk菜单中点home键后,再次进入时要从一级菜单重新进入

Stk菜单中点home键后,再次进入时要从一级菜单重新进入

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
在动态show launcher 菜单中的SAT应用图标的情况下(即插卡launcher菜单中才有SAT应用图标的情况下),在SAT的任意一级菜单中点home键后,再次进入SAT菜单要从一级菜单重新进入。
[SOLUTION]
目前StkMenuActivity、StkMenuActivityII、StkMenuActivityIII、StkMenuActivityIV中并没有对应按HOME键的处理。
要做这个客制化,需要先在应用层截获HOME 按键,再重写该按键的相关事件的处理 ,需要在onKeyDown() 添加对应的对HOME键的处理,即按HOME键时 finish掉对应的activity。
截获HOME按键需要在StkMenuActivity(XXX) 类的 onCreate方法中添加this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED)。
需要修改的地方有以下几处:
一、KK版本上:
1、在mediatek\packages\apps\stk1\src\com\android\stk\StkMenuActivity.java、StkMenuActivityII.java、StkMenuActivityIII和StkMenuActivityIV中均作以下修改:
(1) 开头均导入如下包
import android.view.WindowManager;
(2) onCreate() 方法中:
if (!mMenuInstance.handleOnCreate(getBaseContext(), getIntent(), true))
{
CatLog.d(LOGTAG, "finish!");
finish();
}
//添加以下code
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED,WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED);
(3) onKeyDown() 方法由
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = mMenuInstance.handleKeyDown(keyCode, event);
if (result)
return result;
else
return super.onKeyDown(keyCode, event);
}
修改成:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = mMenuInstance.handleKeyDown(keyCode, event);
//if (result)
// return result;
//else
// return super.onKeyDown(keyCode, event);
if (result){
if(keyCode == KeyEvent.KEYCODE_HOME){
CatLog.d(LOGTAG, "onKeyDow, finish");
finish();
}
return result;
}else{
return super.onKeyDown(keyCode, event);
}
}
2、在mediatek\packages\apps\stk1\src\com\android\stk\StkMenuInstance.java文件的
handleKeyDown() 中作以下修改:
switch (keyCode) {} 中添加 case KeyEvent.KEYCODE_HOME 的处理
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
CatLog.d(LOGTAG, "handleKeyDown - KEYCODE_BACK - mState[" + mState + "]");
switch (mState) {
case StkMenuInstance.STATE_SECONDARY:
cancelTimeOut();
mAcceptUsersInput = false;
CatLog.d(LOGTAG, "onKeyDown - KEYCODE_BACK - STATE_SECONDARY");
sendResponse(StkAppService.RES_ID_BACKWARD);
return true;
case StkMenuInstance.STATE_MAIN:
break;
}
break;
//添加如下case KEYCODE_HOME 的处理
case KeyEvent.KEYCODE_HOME:
CatLog.d(LOGTAG, "handleKeyDown - KEYCODE_HOME - mState[" + mState + "]");
switch (mState) {
case StkMenuInstance.STATE_SECONDARY:
cancelTimeOut();
mAcceptUsersInput = false;
CatLog.d(LOGTAG, "onKeyDown - KEYCODE_HOME - STATE_SECONDARY");
sendResponse(StkAppService.RES_ID_END_SESSION);
return true;
case StkMenuInstance.STATE_MAIN:
return true;
}
break;
}
二、L版本:
没有 StkMenuInstance,则直接将其中的修改并入 StkMenuActivity 中即可。

啦啦,签到专用组

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top