android系统菜单的自动调用,Android app应用调用系统关机菜单

在Android系统中,长按Power按键一定时间会弹出关机菜单。系统并没有提供相应的接口给应用开发者调用。但是客户自己做了个widgets,里面有个Power选项,点击Power图片时必须弹出系统关机菜单。

Intent shutdown = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

shutdown.putExtra(Intent.EXTRA_KEY_CONFIRM, true);

shutdown.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(shutdown);        在PowerActivity.java中处理Power选项的动作,添加上述代码后,出来的是一个选择关机或取消关机的Dialog,明显不符合要求。开始考虑自己写一个界面包括“Power off 、Airplane mode、Silentmode”,后来想还是用系统功能算了。也就是想办法把系统的这个现实菜单的功能给暴露出来。

分析可知,系统发现Power长按按键后,是在frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中的showGlobalActionsDialog()处理现实关机菜单的。使用广播接收器,将其暴露给用户。

在Intent.java中添加Intent.ACTION_SOFTWARE_POWER = “com.pda.power”;

在PhoneWindowManager.java的Init函数中添加广播接收器:

import android.content.Intent;

import android.content.IntentFilter;

IntentFilter filter = new IntentFilter();

filter.addAction(Intent.ACTION_SOFTWARE_POWER);

context.registerReceiver(mPowerReceiver, filter);

BroadcastReceiver mPowerReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

if (Intent.ACTION_SOFTWARE_POWER.equals(intent.getAction())) {

showGlobalActionsDialog();

}

}

};        在PowerActivity.java中发送广播:

Intent shutdown = new Intent(Intent.ACTION_SOFTWARE_POWER);

sendBroadcast(shutdown);         测试成功,showGlobalActionsDialog()通过广播暴露给应用开发者。通过广播来与系统类通信,比添加系统调用接口方便很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值