-
public class MainActivity extends Activity {
-
private MyBroadCastReceiver myBroadCastReceiver;
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
// TODO Auto-generated method stub
-
super.onCreate(savedInstanceState);
-
myBroadCastReceiver = new MyBroadCastReceiver();
-
}
-
@Override
-
protected void onResume() {
-
// TODO Auto-generated method stub
-
super.onResume();
-
IntentFilter intentFilter = new IntentFilter();
-
intentFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
-
System.out.println(“I’m coming, myBroadCastReceiver注册了!”);
-
registerReceiver(myBroadCastReceiver, intentFilter);
-
}
-
private class MyBroadCastReceiver extends BroadcastReceiver{
-
@Override
-
public void onReceive(Context context, Intent intent) {
-
//你自己先把 reasons == homekey 和 长按homekey 排除,剩下的做下面的处理
-
String reason = intent.getStringExtra(“reason”);
-
if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
-
System.out.println("Intent.ACTION_CLOSE_SYSTEM_DIALOGS : " + intent.getStringExtra(“reason”));
-
if (intent.getExtras()!=null && intent.getExtras().getBoolean(“myReason”)){
-
myBroadCastReceiver.abortBroadcast();
-
}else if (reason != null){
-
if (reason.equalsIgnoreCase(“globalactions”)){
-
//屏蔽电源长按键的方法:
-
Intent myIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
-
myIntent.putExtra(“myReason”, true);
-
context.sendOrderedBroadcast(myIntent, null);
-
System.out.println(“电源 键被长按”);
-
}else if (reason.equalsIgnoreCase(“homekey”)){
-
//屏蔽Home键的方法
-
//在这里做一些你自己想要的操作,比如重新打开自己的锁屏程序界面,这样子就不会消失了
-
System.out.println(“Home 键被触发”);
-
}else if (reason.equalsIgnoreCase(“recentapps”)){
-
//屏蔽Home键长按的方法
-
System.out.println(“Home 键被长按”);
-
}
-
}
-
}
-
}
-
}
-
@Override
-
protected void onPause() {
-
// TODO Auto-generated method stub
-
super.onPause();
Android中屏蔽 电源键长按、Home键、Home长按,android开发书籍下载
最新推荐文章于 2024-10-04 09:35:44 发布
本文介绍如何在Android应用中实现对电源键长按、Home键及Home键长按的屏蔽,通过创建自定义BroadcastReceiver,并在onReceive()方法中处理ACTION_CLOSE_SYSTEM_DIALOGS意图,实现对特定系统对话框关闭的监听,以此来阻止电源键和Home键的默认行为。
摘要由CSDN通过智能技术生成