挂断电话的实现(即类似于电话号码黑名单)
2013-09-17 17:27
267 查看
在文章的开头先列出以下需要注意的地方:
1、需要用到的权限如下:
2、挂断电话所需要用到的类、方法、与包
类:
方法:
包:
所需要用到的包的下载路径为:
下载地址如下:
代码如下:
在写代码之前先把所需要用到的包导进来。。
1、MainActivity
2、PhoneService
3、AndroidManifest.xml
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 { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this,PhoneService1.class); startService(intent); } @Override public 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; @Override public 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() { } @Override public 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; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Uri uri = Calls.CONTENT_URI; getContentResolver().delete(uri," number = ? ", new String[]{incomingNumber}); getContentResolver().unregisterContentObserver(this); } } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return 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"/>
相关文章推荐
- 挂断电话的实现(即类似于电话号码黑名单)
- UITableVIew实现类似于电话本的首字母索引
- 24.Android-实现黑名单电话拦截
- UITableVIew实现类似于电话本的首…
- 黑名单电话短信拦截实现
- android调用ITelephony类,AIDL实现电话,联系人黑名单拦截挂断服务
- 实现电话、或电邮、或电话号码的登陆
- TableVIew实现类似于电话本的首字母索引
- UITableVIew实现类似于电话本的首字母索引
- UITableVIew实现类似于电话本的首字母索引
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
- 实现电话、或电邮、或电话号码的登陆
- 整理:打开拨号界面自动填写号码而不直接呼叫电话的实现
- 简易散列表实现电话号码查询系统
- AIDL实现挂断电话
- 实现电话自动拨打、挂断
- 实现类似于yahoo通讯录的查询
- 说说某游戏保护驱动中驱动黑名单的具体实现
- Android 实现手机拨打电话的功能
- 最近实现一个类似于微信通讯录的功能//