开发一个系统级应用,其中有一部分包含指纹注册,要求某个activity显示的时候,为了提升用户体验,需要禁用平板下方虚拟按键。网上搜索了很久,都没有确切的解决方法。思路是通过BroadcastReceiver广播收发机制,达到对虚拟按键的禁用效果。
下面是解决步骤:
1,底层修改系统设置,提供广播禁用和可用action,如<action android:name="android.intent.action.DISABLE_CONTROL"/> <category android:name="android.intent.category.DEFAULT"/>和<action android:name="android.intent.action.ENABLE_CONTROL"/><category android:name="android.intent.category.DEFAULT"/>。
2,在应用层,在需要禁用虚拟按键的activity中动态注册BroadcastReceiver以及发送广播。
1)创建过滤器和BroadcastReceiver实例。
private IntentFilter intentFilter = new IntentFilter("android.intent.action.DISABLE_CONTROL");
private HideSystemKeyReceiver hideSystemKeyReceiver = new HideSystemKeyReceiver();
2)在OnStart()方法里注册广播并发送广播。
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
registerReceiver(hideSystemKeyReceiver, intentFilter);
Intent intent = new Intent();
intent.setAction("android.intent.action.DISABLE_CONTROL");
sendBroadcast(intent);
}
3)创建内部类BroadcastReceiver,重写OnReceive()。
private class HideSystemKeyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
}
几番调试,终于测试成功通过,达到预期效果!