挂断电话的实现(即类似于电话号码黑名单)
来源:互联网 发布:北森软件 编辑:程序博客网 时间:2024/04/28 19:06
在文章的开头先列出以下需要注意的地方:
1、需要用到的权限如下:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/><!--用于读取电话的状态--> <uses-permission android:name="android.permission.WRITE_CONTACTS"/><!--用于删除来电记录--> <uses-permission android:name="android.permission.CALL_PHONE"/><!--用于挂断电话-->
2、挂断电话所需要用到的类、方法、与包
类:
Class clazz = Class.forName("android.os.ServiceManager");
方法:
Method method = clazz.getMethod("getService", String.class);
包:
所需要用到的包的下载路径为:
下载地址如下:
http://download.csdn.net/detail/caihongshijie6/6282451
代码如下:
在写代码之前先把所需要用到的包导进来。。
1、MainActivity
package com.njupt.endcall1;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = new Intent(this,PhoneService1.class);startService(intent);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
2、PhoneService
package com.njupt.endcall1;import java.lang.reflect.Method;import com.android.internal.telephony.ITelephony;import android.app.Service;import android.content.Context;import android.content.Intent;import android.database.ContentObserver;import android.net.Uri;import android.os.Handler;import android.os.IBinder;import android.provider.CallLog.Calls;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;public class PhoneService1 extends Service {private TelephonyManager tm;private MyPhoneStateListener listener;@Overridepublic void onCreate() {super.onCreate();tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);listener = new MyPhoneStateListener();tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);}private class MyPhoneStateListener extends PhoneStateListener {public MyPhoneStateListener() {}@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE:break;case TelephonyManager.CALL_STATE_OFFHOOK:break;case TelephonyManager.CALL_STATE_RINGING:endcall(incomingNumber);break;default:break;}}}private void endcall(String incomingNumber) {try {if (incomingNumber.equals("5560")) {Class clazz = Class.forName("android.os.ServiceManager");Method method = clazz.getMethod("getService", String.class);IBinder ibinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE); ITelephony iTelephony = ITelephony.Stub.asInterface(ibinder); iTelephony.endCall(); getContentResolver().registerContentObserver(Calls.CONTENT_URI,true, new MyContentObserver(new Handler(), incomingNumber)); }} catch (Exception e) {e.printStackTrace();}}private class MyContentObserver extends ContentObserver{private String incomingNumber;public MyContentObserver(Handler handler , String incomingNumber) {super(handler);this.incomingNumber = incomingNumber;}@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange); Uri uri = Calls.CONTENT_URI;getContentResolver().delete(uri," number = ? ", new String[]{incomingNumber}); getContentResolver().unregisterContentObserver(this);}}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}
3、AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.CALL_PHONE"/>
<service android:name="com.njupt.endcall1.PhoneService1"/>
- 挂断电话的实现(即类似于电话号码黑名单)
- Android黑名单挂断电话的操作
- Android黑名单电话挂断(AIDL)
- Android设置黑名单电话挂断
- Android黑名单自动挂断电话
- 黑名单挂断电话及删除电话记录
- Android黑名单电话挂断(aidl)
- Android黑名单电话挂断(aidl)
- Android电话设置黑名单,来电自动挂断
- android调用ITelephony类,AIDL实现电话,联系人黑名单拦截挂断服务
- 采用aidl技术实现电话的挂断
- AIDL实现挂断电话
- TelephoneManager学习之二,添加黑名单并自动挂断电话
- android黑名单挂断电话(endCall)反射方法获取
- 类似于黑名单的短信拦截
- 实现电话自动拨打、挂断
- 实现电话自动拨打、挂断
- 实现电话自动拨打、挂断
- vs2010 技巧
- 细说PHP中strlen和mb_strlen的区别
- OpenCV Mat结构
- matlab中的mxArray和mwArray
- jQuery表单插件AjaxForm的简单示例
- 挂断电话的实现(即类似于电话号码黑名单)
- ORACLE SELECT INTO
- 菜鸟之旅——Java入门篇(一)简单介绍
- Linux下多任务间通信和同步-消息队列
- 动态导航栏
- 云端移动巧妙获取网站访客手机号码
- HBase过滤器
- 程序猿想结婚,苦于积蓄问题;已婚朋友能否晒晒结婚花费?
- 9月17日