Android给自定义按键添加广播和通过广播给当前焦点输入框赋值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android给自定义按键添加广播和通过广播给当前焦点输入框赋值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3184字,纯文字阅读大概需要5分钟。
内容图文
一、给自定义按键添加广播
修改PhoneWindowManager.java中的interceptKeyBeforeDispatching方法
/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
1 @Override 2 public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) { 3finalboolean keyguardOn = keyguardOn(); 4finalint keyCode = event.getKeyCode(); 5finalint repeatCount = event.getRepeatCount(); 6finalint metaState = event.getMetaState(); 7finalint flags = event.getFlags(); 8finalboolean down = event.getAction() == KeyEvent.ACTION_DOWN; 9finalboolean canceled = event.isCanceled(); 10finalboolean longPress = (flags & KeyEvent.FLAG_LONG_PRESS) != 0; 11finalboolean virtualKey = event.getDeviceId() == KeyCharacterMap.VIRTUAL_KEYBOARD; 12final String isCitKeyTest=SystemProperties.get("persist.sys.startCitKeyTest"); 13141516//添加自定义按键广播----开始17switch (keyCode) 18 { 19case 135: 20case 136: 21case 137: 22case 139: 23 { 24if (repeatCount == 0) { 2526 Intent myKeyIntent = new Intent(); 272829if(down) 30 { 31 myKeyIntent.setAction("com.rscja.android.KEY_DOWN"); 32 } 33else34 { 35 myKeyIntent.setAction("com.rscja.android.KEY_UP"); 36 } 373839 myKeyIntent.putExtra("keycode", keyCode); 4041 mContext.sendBroadcastAsUser(myKeyIntent, UserHandle.ALL); 42434445 } 46 } 47484950break; 51 } 5253//添加自定义按键广播----结束5455565758…… 59…… 60…… 61…… 6263 }
二、通过广播给当前焦点输入框赋值
修改InputMethodService.java中的onCreate()方法
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
1 @Override publicvoid onCreate() { 2 mTheme = Resources.selectSystemTheme(mTheme, 3 getApplicationInfo().targetSdkVersion, 4 android.R.style.Theme_InputMethod, 5 android.R.style.Theme_Holo_InputMethod, 6 android.R.style.Theme_DeviceDefault_InputMethod, 7 android.R.style.Theme_DeviceDefault_InputMethod); 8super.setTheme(mTheme); 9super.onCreate(); 10 mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 11 mInflater = (LayoutInflater)getSystemService( 12 Context.LAYOUT_INFLATER_SERVICE); 13 mWindow = new SoftInputWindow(this, "InputMethod", mTheme, null, null, mDispatcherState, 14 WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false); 15if (mHardwareAccelerated) { 16 mWindow.getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 17 } 18 initViews(); 19 mWindow.getWindow().setLayout(MATCH_PARENT, WRAP_CONTENT); 202122//注册广播监听23 IntentFilter barCodeCheckFilter = new IntentFilter("com.rscja.android.DATA_RESULT"); 24 mRootView.getContext().registerReceiver(m_barCodeCheckReciever,barCodeCheckFilter); 2526 } 272829//添加自定义广播30private BroadcastReceiver m_barCodeCheckReciever = new BroadcastReceiver () { 3132 @Override 33publicvoid onReceive(Context context, Intent intent) { 34 InputConnection conn = getCurrentInputConnection(); 3536 String intent_data=intent.getStringExtra("data"); 373839if(intent_data.charAt(intent_data.length() - 1)==‘\n‘) 40 { 41if (conn != null) { 42 conn.commitText(intent_data.substring(0,intent_data.length()-1), 1); 43 } 44 sendKeyChar(‘\n‘); 45 } 46else47 { 48if (conn != null) { 49 conn.commitText(intent_data, 1); 50 } 51 } 52 } 53 };
原文:http://www.cnblogs.com/l2rf/p/5018372.html
内容总结
以上是互联网集市为您收集整理的Android给自定义按键添加广播和通过广播给当前焦点输入框赋值全部内容,希望文章能够帮你解决Android给自定义按键添加广播和通过广播给当前焦点输入框赋值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。