微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 如何让app自行处理 power key

如何让app自行处理 power key

时间:10-02 整理:3721RD 点击:

[DESCRIPTION]

power key 通常都是由 php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework 自行的
app 无法拿到这个 key 值
如果想让某个 app 自行处理 power key
应该要怎么做呢?

[SOLUTION]

1: 修改 phoneWindowManager.Java 的 interceptKeyBeforeQueueing 方法,在 reference line 后加入下面这段代码
case KeyEvent.KEYCODE_POWER: { //reference line
result &= ~ACTION_PASS_TO_USER; //reference line
// add begin
ActivityManager activityManager = (ActivityManager) getSystEMService(Context.ACTIVITY_SERVICE);
try{
if (activityManager.getRunningTasks(1).get(0).topActivity.getPackageName().equals("
your_special_package_name")){
//Please reset the special package name.
result |= ACTION_PASS_TO_USER;
Xlog.d(TAG,"detect power key in special package, pass to user!")
}
}catch(NullPointerException e){
Xlog.d(TAG,"ingore a NullPointerException ..");
}
//add end
2: 同样在此分支内, 找到 else 语句段, 并找到如下位置加入
if (interceptPowerKeyUp(canceled || mPendingPowerKeyUpCanceled)) { //参考行
if(!((result & ACTION_PASS_TO_USER) == ACTION_PASS_TO_USER)){ //加入行
result = (result & ~ACTION_WAKE_UP) | ACTION_GO_TO_SLEEP; //原有代码
} //加入行
}
注意: 以上蓝色背景部分的内容需要替换为您预期要处理 power key 的 app 对应的 package name.

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

网站地图

Top