和上一篇一样,一些常用的功能代码。原本想写在一篇里面,突然发现有时文章太长,看久了也许就走神了,所以还是简洁点,每篇记录10个左右case,慢慢积累。
1.精确区配联系人 11位 or 7位
android源码的号码匹配默认是从后向前匹配7位,这个可以应付大多数情况了,但是这东西放在天朝有时就不灵了,11位号码 13500000000和 00000000 android分不出来了, 在哪里改下呢? Framework代码 phoneNumberUtils.java有个常量,把这个7改成11,匹配时所调用的方法看下的代码吧,关键的代码在这里,其它的要看具体应用了。
static final int MIN_MATCH = 7;
public static String toCallerIDMinMatch(String phoneNumber) {
String np = extractNetworkPortionAlt(phoneNumber);
return internalGetStrippedReversed(np, MIN_MATCH);
2. 列表长按菜单对应的选项ID
这个需求应该比较常见了,就是list列表长按菜单项所对应的listitem的id是多少,如何得到。 网上应该也有很多,不过多解释在此记录 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfoIn) {
AdapterContextMenuInfo mi = (AdapterContextMenuInfo) menuInfoIn;
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)aItem.getMenuInfo();
这个mi对象中会有 id position view三个参数
}
还有可能是这样的
public boolean onContextItemSelected(MenuItem aItem) {
ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)aItem.getMenuInfo();
id = (int)info.id;
return true;
}
3 设置字符串光标位置
也许有时候我们就不想让光标在第一个位置,设置方法就是下面的代码了,要使用Selection.java这个类
Editable etext = mSubjectTextEditor.getText();
Selection.setSelection(etext, etext.length());
4 监听音量上下键调节音量
这个网上貌似很多回答,大多数是转载,监听onkeyDown消息没错,可是好多都没有给出获取当前音量的方法,基本上没法直接用。下面这个测试是有效的。
AudioManager audio = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, // 增加音量
AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER,//减少音量
AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
return true;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
5 editText中设置回车输入不换行
这是源码 Mms 编辑界面所使用的一个效果,在信息正文的编辑框里输入回车是不会实现换行的,实现代码如下,也许有时候你也有这样的需求。
Activtyy 实现TextView.OnEditorActionListener这个接口
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event != null) {
// if shift key is down, then we want to insert the '\n' char in the TextView; 注意看下注释
// otherwise, the default action is to send the message.
if (!event.isShiftPressed()) {
return true;
}
return false;
}
后面的慢慢补充。。。