我正在尝试创建一个可以在按下电源按钮时响应的应用程序。更具体地说,当按下2次时会响应它并发送短信。
我也尝试使用BroadcastReceiver
,但它没有用。
以下是我尝试用来覆盖电源按钮的代码:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
return true;
}
return super.dispatchKeyEvent(event);
}
我也尝试了这个:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_POWER)
{
// do what you want with the power button
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, sms, null, null);
Toast.makeText(getApplicationContext(), "SMS Sent!",
Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
使用BroadcastReceiver
我也试过了
public BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Check action just to be on the safe side.
if ((intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) ||
(intent.getAction().equals(Intent.ACTION_SCREEN_ON)) ) {
long delta = 0;
int count = 0;
if((System.currentTimeMillis() - delta) < DOUBLE_CLICK_INTERVAL)
{
count++;
Log.e("AAAAAAAA", "count= "+count);
}else{
count = 0;
}
if(count == 4){
Log.e("AAAAAAAA", "EVENT TRIGGERED!!!!!");
Intent alarmIntent = new Intent("com.helpme.EVENT_MyReceiver");
sendBroadcast(alarmIntent);
}
delta = System.currentTimeMillis();
}
}
};
但以上都没有为我工作。
答案 0 :(得分:0)
我认为你应该在系统(Android)关闭时调用你的事件,这样你就可以拦截像事件一样按下的按钮。
我建议您构建一个广播接收器以捕获ACTION_SHUTDOWN意图,然后在onReceive()方法中,您可以执行任何您喜欢的操作。