- 浏览: 434981 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
黑名单 自动静音
当呼叫者属于黑名单列表 自动静音
[代码 步骤]
本着先易后难的原则 先介绍黑名单列表的制作:其会列出所有联系人列表 以CheckBox形式 可以添加/移除 黑名单
1. 定义所需布局:list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnOK" android:layout_gravity="right" android:text="OK" android:layout_width="100dip" android:layout_height="wrap_content" /> </LinearLayout>
2. 初始化View
public void initial(){ initialView(); } public void initialView(){ lView = (ListView)findViewById(R.id.list); btnOK = (Button)findViewById(R.id.btnOK); }
3. 定义ContactsAdapter 用于列出使用联系人
public class ContactsAdapter extends BaseAdapter { Activity activity; public ContactsAdapter(Activity a){ activity = a; } @Override public int getCount() { // TODO Auto-generated method stub return cursor.getCount(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub CheckBox rb = new CheckBox(activity); rb.setText(" "+getNameById(arg0)+" |"+getNumberById(arg0)); return rb; } }
其中 getNameById() getNumberById() 可以根据position 返回联系人的名字和号码
public String getNameById(int id){ cursor.moveToPosition(id); int index = cursor.getColumnIndex(People.NAME); return cursor.getString(index); } public String getNumberById(int id){ cursor.moveToPosition(id); int index = cursor.getColumnIndex(People.NUMBER); return cursor.getString(index); } 其中 cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
3. ContactsAdapter 实例化
adapter = new ContactsAdapter(this); lView.setAdapter(adapter);
4. 当按下btnOK 得到所有黑名单 并返回给前Activity:BlacklistMain
btnOK.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub loadContactsChecked(); } });
5. loadContactsChecked 用于获取所有选中联系人列表 并返回之
public void loadContactsChecked(){ List<String> list = new ArrayList<String>(); for(int i=0;i<lView.getCount();i++){ CheckBox rButton = (CheckBox)lView.getChildAt(i); if(rButton.isChecked()){ list.add(getNumberById(i)); } } sendBack(list); } public void sendBack(List<String> l){ Intent intent = new Intent(); Bundle bundle = new Bundle(); String[] sArray = new String[l.size()]; l.toArray(sArray); bundle.putStringArray("phone", sArray); intent.putExtras(bundle); this.setResult(RESULT_OK, intent); this.finish(); }
至此 黑名单列表选取 已经完成 下面讲自动静音功能 文件为:BlacklistMain
布局:main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/buttonMain" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="黑名单" /> <Button android:id="@+id/buttonClear" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清屏" /> <Button android:id="@+id/buttonList" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="列举" /> </LinearLayout> <TextView android:id="@+id/status" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
1. 与BlacklistManager 即:黑名单列表选取 连接 的代码
* 单击buttonMain 跳转至BlacklistManager
findViewById(R.id.buttonMain).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub sendGo(); } });
sendGo() 实现:
public void sendGo(){ Intent i = new Intent(BlockMain.this,BlockManager.class); this.startActivityForResult(i, ACTIVITY_CONTACTS_DO_CHECKED); }
其中 ACTIVITY_CONTACTS_DO_CHECKED 为int 用于标记具体是那个startActivity 之用
public final static int ACTIVITY_CONTACTS_DO_CHECKED = 20;
* Activity 返回处理 即:从Intent中取出所有选中联系人列表 并存入List<String> 中
protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case ACTIVITY_CONTACTS_DO_CHECKED: Bundle b = data.getExtras(); String[] s = b.getStringArray("phone"); blockList.clear(); for(String i:s){ blockList.add(i); } showBloclist(); break; } }
下面主要说下 电话呼叫拦截且静音 代码
1. 继承PhoneStateListener 并实现其中的onCallStateChanged() 即:根据不同电话状态做定制化
public class CustomPhoneCallListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber){ switch(state){ case TelephonyManager.CALL_STATE_IDLE: textStatus.append("\n"+"status:CALL_STATE_IDLE"); aManager.setRingerMode(AudioManager. RINGER_MODE_NORMAL); break; case TelephonyManager.CALL_STATE_OFFHOOK: textStatus.append("\n"+"status:CALL_STATE_OFFHOOK"); break; case TelephonyManager.CALL_STATE_RINGING: textStatus.append("\n"+"status:CALL_STATE_RINGING:"+incomingNumber); showBloclist(); if(isBlock(incomingNumber)){ aManager.setRingerMode(AudioManager. RINGER_MODE_SILENT); showToast("Call-number:"+incomingNumber+"|silent"); } else { showToast("Call-number:"+incomingNumber); } break; } super.onCallStateChanged(state, incomingNumber); } }
其中 isBlock() 用于判断来电号码是否在黑名单中 实现为:
public boolean isBlock(String s){ //to load all String stored in List<String> to String[] String[] bArray = new String[blockList.size()]; blockList.toArray(bArray); for(String s1:bArray){ if(s1.replace("-", "").equals(s)){ return true; } } return false; }
对了 在最后别忘了监听电话状态 即:
public void managerCallListener(){ aManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); tManager = (TelephonyManager)getSystemService( TELEPHONY_SERVICE); cpListener = new CustomPhoneCallListener(); tManager.listen(cpListener, PhoneStateListener. LISTEN_CALL_STATE); }
3. emulator 运行截图:
* 添加黑名单 选取:137 128
* 以号码:137 呼叫该emulator 即:gsm call 137
最后 BS android ! 不知道什么原因 开始在emulator 老失败 后来发现其不能打/接听电话 一拨出电话 就提示: Not register on network. 没办法 只有重新创建emulator再试
至于怎么以指导号码向该emulator打电话 以前的博客有 大家自己找一下吧!
done!!!
评论
因为这仅仅为demo 那样写要文件不断切换 比较麻烦 所以这样写 简便点~~~~
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2617Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5947ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3190MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19047CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3145获取Launcher 启动列表 即 列出所有Launc ... -
PreferenceActivity 全接触
2010-06-19 12:53 9451PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5961Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14474SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1459Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2251流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3234NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1229自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3167模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2488TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3990View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1849Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1754*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1527我们知道Android 默认是不支持*.gif 的 但是 ...
相关推荐
这个"android黑名单设置 来电自动静音"的主题,意味着我们可以通过编程方式实现一个功能,即当某个电话号码被列入黑名单时,其来电将会被自动静音。这涉及到Android的权限管理、电话拦截服务以及音频控制等多个方面...
这样,当黑名单中的电话打来时,手机会自动变为静音,从而实现了黑名单功能。 在实际应用中,这个简单的例子可能需要进一步完善,比如增加短信拦截功能,或者存储和管理黑名单数据(可能需要数据库支持),以及更...
在本Android项目实战中,我们将深入探讨如何实现手机卫士的核心功能——拦截黑名单及处理响一声电话的问题。手机卫士是一种常见的应用,旨在提供安全防护,帮助用户管理来电和短信,尤其是那些来自未知或不受欢迎...
----------------------------附加功能:静音/取消静音选项卡暂时将个别选项卡静音或取消静音,而无需将每个网站都列入白名单/黑名单访问。静默模式更喜欢以完全静默方式浏览网页?尝试静音模式。静音模式可防止任何...
根据他们的url使用黑名单或白名单自动对标签进行mutes标签,并包括其他一些有用的muting控件。 -使用黑名单或白名单,根据标签页的网址自动将其静音。-恐慌的“全部静音”按钮–暂停扩展名按钮–列表条目可以有多个...
②短信黑名单(短信黑名单表)(可手动添加黑名单号码,也可通过读取系统联系人信息进行选择,提供"移除"功能) 1.2 来电拦截:(拦截后发出通知) ①来电黑名单(电话黑名单表)(可手动添加黑名单号码,也可通过读取...
源码中可能会包含处理黑名单逻辑的部分,如读取和存储黑名单号码,以及在来电时检查来电号码是否在黑名单内,如果在,则自动挂断或静音处理。这部分涉及到数据库操作(如SQLite)和实时事件监听(BroadcastReceiver...
除了简单的黑白名单机制,还可以设置更复杂的规则,如时间条件(例如,在特定时间段内拦截所有来电)、特定事件触发(例如,当设备处于静音模式时自动拦截所有来电)等。这些策略可以通过用户界面配置,并保存在应用...
2016年6月更新:Mutetab现在静音,知道标签播放声音,仅包括显示的新功能最近嘈杂的标签,默认情况下静音和黑名单。延期首次于2011年发布,作为提供具有更好的镀Chrome和闪光局限性的浏览器的浏览器的实验。此最新...
首先,文章将手机联系人分为四个类别:系统联系人(通讯簿联系人)、白名单(紧急联系人)、黑名单和陌生人。针对这些不同的类别,应用会采取不同的处理策略。例如,白名单中的联系人在任何情况下都可以正常通信,而...
这个工具的主要功能是将特定的电话号码列入黑名单,一旦这些号码尝试拨打用户的电话,MODEM将自动拒接或者静音处理,从而让用户免受骚扰电话的困扰。 在现代通信环境中,电话骚扰已经成为许多人生活中的一个烦恼。...
- 黑名单功能:用户可以将不想接听或者骚扰电话的号码添加到黑名单,这样当这些号码来电时,电话管理器会自动拦截,避免不必要的打扰。 - 白名单功能:相反,白名单内的号码则会被视为信任联系人,他们的来电不会...
*禁用自动静音功能可让您暂时禁用所有上述行为 *通过将鼠标悬停在左上角的“ MuteTab”文本上,可以避免听到一些嘈杂的标签 *实验性的“音乐回避”功能会在您观看视频时为您静音,之后再将其取消静音。 支持语言:...
例如,用户可以在“设置”>“电话”>“阻止此来电者”中添加特定号码到黑名单,这样来自这些号码的来电和信息都会被自动拦截。 2. **未知来电者筛选**:iOS 13及更高版本引入了“未知来电者静音”功能,当接到不在...
1. 黑名单管理:用户可以将特定的手机号码添加到黑名单,一旦这些号码来电,系统会自动拦截,不会有任何提示,有效避免了不必要的干扰。同时,黑名单管理还支持导入导出,方便用户在不同设备间同步。 2. 自定义拦截...
如果号码在黑名单内,应用可能会自动拒接或静音。 8. **性能优化**:为了不影响用户体验,需要对查询速度和内存使用进行优化。例如,使用高效的查询算法,避免不必要的网络请求,以及合理地管理数据同步和更新。 9...
2. 拦截策略:根据用户设置的白名单、黑名单或者通话模式(例如静音、振动、勿扰模式等)来决定是否允许接听或拨打某个电话。 四、UI设计与交互 1. 用户界面应简洁易用,包括设置页面、拦截记录查看、黑白名单管理...
使活动标签静音,或自动使黑名单中由URL打开的标签静音。 Позволяетотключатьзвукнаопределенныхвкладкахлибодобавитьдоменилиurlвчерныо...
威尼姆·迪科尔·博特Wynem是一款多功能不和谐机器人,具有多种功能,可满足各种目的。... 列入黑名单的成员可以通过使用某些或所有命令而被列入黑名单,这意味着他们将无法使用该服务器中的那些漫游