Android TV屏蔽返回键

重写OnkeyDown方法

 

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    if(KeyEvent.KEYCODE_BACK==keyCode){        return false;    }    return super.onKeyDown(keyCode, event);}

home键比较特殊,是受系统保护的,无法通过常规手段屏蔽,找到一个靠谱的方法是,通过工具类监听到home键的广播,然后做处理,不过效果还不是很理想

 

一,创建工具类

 

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;/** * Home按键监听类 * 使用说明: * 1、初始化HomeListen * HomeListen homeListen = new HomeListen( this ); * homeListen.setOnHomeBtnPressListener( new setOnHomeBtnPressListener(){ *        @Override *        public void onHomeBtnPress( ){ *           // 按下Home按键回调 *        } * *        @Override *        public void onHomeBtnLongPress( ){ *           // 长按Home按键回调 *        } * }); * * 2、在onResume方法中启动HomeListen广播: * homeListen.start(); * * 3、在onPause方法中停止HomeListen广播: * homeListen.stop( ); * */public class HomeListen {    public HomeListen(Context context) {        mContext = context;        mHomeBtnReceiver = new HomeBtnReceiver( );        mHomeBtnIntentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);    }    public void setOnHomeBtnPressListener( OnHomeBtnPressLitener onHomeBtnPressListener ){        mOnHomeBtnPressListener = onHomeBtnPressListener;    }    public void start( ){        mContext.registerReceiver( mHomeBtnReceiver, mHomeBtnIntentFilter );    }    public void stop( ){        mContext.unregisterReceiver( mHomeBtnReceiver );    }    class HomeBtnReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent) {            receive( context, intent );        }    }    private void receive(Context context, Intent intent){        String action = intent.getAction();        if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {            String reason = intent.getStringExtra( "reason" );            if (reason != null) {                if( null != mOnHomeBtnPressListener ){                    if( reason.equals( "homekey" ) ){                        // 按Home按键                        mOnHomeBtnPressListener.onHomeBtnPress( );                    }else if( reason.equals( "recentapps" ) ){                        // 长按Home按键                        mOnHomeBtnPressListener.onHomeBtnLongPress( );                    }                }            }        }    }    public interface OnHomeBtnPressLitener{        public void onHomeBtnPress( );        public void onHomeBtnLongPress( );    }    private Context mContext = null;    private IntentFilter mHomeBtnIntentFilter = null;    private OnHomeBtnPressLitener mOnHomeBtnPressListener = null;    private HomeBtnReceiver mHomeBtnReceiver = null;}

 

 

 

二、在activity调用

 

public class HomeListenActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_home_listen_layout);        initHomeListen( );    }

 

 

@Overrideprotected void onResume( ) {    super.onResume();    mHomeListen.start( );}    @Override    protected void onPause() {        super.onPause();        mHomeListen.stop( );    }    private void initHomeListen( ){        mHomeListen = new HomeListen( this );        mHomeListen.setOnHomeBtnPressListener( new HomeListen.OnHomeBtnPressLitener( ) {            @Override            public void onHomeBtnPress() {                Log.e("-----home键出现了----","-----home键出现了----");                startSelfFromPendingIntent();            }            @Override            public void onHomeBtnLongPress() {                Log.e("-----home键出现了----","-----home键出现了----");                startSelfFromPendingIntent();            }        });    }    private void showToast( String toastInfoStr ){        Toast.makeText( this, toastInfoStr, Toast.LENGTH_LONG ).show( );    }    private HomeListen mHomeListen = null;    private void startSelfFromPendingIntent() {        Intent intent = new Intent();        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        intent.setAction(Intent.ACTION_MAIN);        intent.addCategory(Intent.CATEGORY_LAUNCHER);        intent.setComponent(new ComponentName(MainActivity.this, MainActivity.class));        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);        try {            pendingIntent.send();        } catch (Exception e) {            Log.e("", "stayTop fail");        }    }

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. cocos2dx 使用jni方法获取android mac地址
  5. Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
  6. Canvas
  7. 介绍GLSurfaceView
  8. 【Android】从源码中探讨Handler机制
  9. Android4.2.2自增物理按键(frameworks)

随机推荐

  1. android 读取properties文件
  2. Android的StatusBar资料收集
  3. Android开发中RxJava-SQLBrite实时刷新UI
  4. Android属性之build.prop生成过程
  5. Android内存管理、监测剖析
  6. Android存储访问及目录
  7. Android(安卓)开发者必备的十个工具(下)
  8. Android初学习 - android:sharedUserId="
  9. android之layout布局和ListView中的一些
  10. android多播