挂断电话的实现 即类似于电话号码黑名单

本文介绍了如何实现电话挂断功能,类似于电话号码黑名单。首先强调了所需权限,包括类、方法和包的使用,并提供了相关包的下载路径。接着提到了在编写代码前需要导入的包,涉及MainActivity、PhoneService及AndroidManifest.xml的配置。最后,鼓励读者学习作者老师的人工智能教程。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

在文章的开头先列出以下需要注意的地方:

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"/>




           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值