第一种黑名单挂断电话

使用AIDL文件自动生成接口,把NeighboringCellInfo.aidl和ITelephony.aidl放到对应的包中。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.zking.administrator.g160628_android24_telephone.MainActivity"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入黑名单号码"android:id="@+id/et_main"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="设置黑名单"android:onClick="set"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="取消黑名单"android:onClick="qu"/></LinearLayout>
</LinearLayout>

MainActivity.java

package com.zking.administrator.g160628_android24_telephone;import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText et_main;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et_main = (EditText) findViewById(R.id.et_main);String number=PrefUtil.getString(MainActivity.this,"number","");et_main.setText(number);}public void set(View view){
//        //得到号码final String number=et_main.getText().toString();AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);builder.setTitle("温馨提示");builder.setMessage("你确定设置"+number+"黑名单吗?");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "黑名单设置成功", Toast.LENGTH_SHORT).show();PrefUtil.setString(MainActivity.this,"number",number);}});builder.setNegativeButton("取消",null);builder.show();}public void qu(View view){String number=PrefUtil.getString(MainActivity.this,"number","");if(!"".equals(number)){PrefUtil.setString(MainActivity.this,"number","");Toast.makeText(this, "取消成功", Toast.LENGTH_SHORT).show();}}
}

MySMSReceiver.java

在来去电的广播中,判断电话状态,如果是响铃状态,得到电话号码,如果是要拦截的电话就执行下面的操作

package com.zking.administrator.g160628_android24_telephone;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
import android.telephony.TelephonyManager;
import android.widget.Toast;import com.android.internal.telephony.ITelephony;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** Created by Administrator on 2017/7/15.*/public class MySMSReceiver extends BroadcastReceiver {private String a;@Overridepublic void onReceive(Context context, Intent intent) {if("android.intent.action.PHONE_STATE".equals(intent.getAction())){//得到号码String number=intent.getStringExtra("incoming_number");Toast.makeText(context, "有电话进来了,号码是:"+number, Toast.LENGTH_SHORT).show();//获取电话状态,电话管理者TelephonyManager tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);int state=tm.getCallState();switch (state) {case TelephonyManager.CALL_STATE_RINGING:Toast.makeText(context, "未接听", Toast.LENGTH_SHORT).show();//得到电话管理者类对象Class<TelephonyManager> telephonyManagerClass=TelephonyManager.class;//得到方法try {Method method=telephonyManagerClass.getDeclaredMethod("getITelephony",null);//设置可访问method.setAccessible(true);//执行方法ITelephony iTelephony= (ITelephony) method.invoke(tm,null);//判断//得到号码String n=PrefUtil.getString(context,"number","").trim();if(n.equals(number)){try {iTelephony.endCall();} catch (RemoteException e) {e.printStackTrace();}}} catch (NoSuchMethodException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}break;case TelephonyManager.CALL_STATE_OFFHOOK:Toast.makeText(context, "通话中", Toast.LENGTH_SHORT).show();break;case TelephonyManager.CALL_STATE_IDLE:Toast.makeText(context, "已挂断", Toast.LENGTH_SHORT).show();break;}}}
}

PrefUtil.java

package com.zking.administrator.g160628_android24_telephone;import android.content.Context;
import android.content.SharedPreferences;/*** Created by Administrator on 2017/7/15.*/public class PrefUtil {public static void setString(Context context,String key,String value){SharedPreferences sp=context.getSharedPreferences("phone", Context.MODE_PRIVATE);sp.edit().putString(key,value).commit();}public static String getString(Context context, String key, String defValue) {SharedPreferences sharedPreferences = context.getSharedPreferences("phone", Context.MODE_PRIVATE);return sharedPreferences.getString(key, defValue);}
}

自动挂断的权限AndroidManifest.xml

 <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

第二种黑名单自动挂断电话

MyPhone.java

在来去电的广播中,判断电话状态,如果是响铃状态,得到电话号码,如果是要拦截的电话就执行下面的操作

package com.zking.administrator.g160628_android24_telephone2;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
import android.telephony.TelephonyManager;
import android.util.Log;import com.android.internal.telephony.ITelephony;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** Created by Administrator on 2017/7/16.*/
public class MyPhone extends BroadcastReceiver{private ITelephony iTelephony;@Overridepublic void onReceive(Context context, Intent intent) {if("android.intent.action.PHONE_STATE".equals(intent.getAction())){//得到电话管理者TelephonyManager telephonyManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//得到电话的状态int state=telephonyManager.getCallState();switch (state){case TelephonyManager.CALL_STATE_RINGING://得到电话号码String number=intent.getStringExtra("incoming_number");Log.i("test","来电话了。。"+number);//得到电话管理者类对象Class<TelephonyManager> telephonyManagerClass=TelephonyManager.class;//得到方法Method method=null;try {method=telephonyManagerClass.getDeclaredMethod("getITelephony",null);} catch (NoSuchMethodException e) {e.printStackTrace();}//允许访问私有的方法method.setAccessible(true);//执行方法try {iTelephony = (ITelephony) method.invoke(telephonyManager,null);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//判断是不是这个号码,是的话就挂断if("18711185761".equals(number)){try {iTelephony.endCall();} catch (RemoteException e) {e.printStackTrace();}}break;case TelephonyManager.CALL_STATE_OFFHOOK:Log.i("test","通话中。。。");break;case TelephonyManager.CALL_STATE_IDLE:Log.i("test","挂断");break;}}}
}

AndroidManifest.xml

<!--权限--><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<receiver android:name=".MyPhone"><intent-filter><action android:name="android.intent.action.PHONE_STATE"></action></intent-filter></receiver>

Android黑名单自动挂断电话相关推荐

  1. android 自己写挂电话,MTK Android 如何自动挂断电话

    //拨打电话,并定时60S对方未接听自动挂断 public voidCall() { Uri localUri = Uri.parse("tel:" + mPhoneNumber[ ...

  2. java代码设置手机来电黑名单自动挂断

    今天讲的是电话的黑名单自动挂断的功能,所以现在跟着我的步骤来吧! 一.首先切换到project区间去,在main的文件夹里面创一个aidl文件夹,把官网中下的两个文件夹cope到这个aidl文件夹里面 ...

  3. Android -- 自动挂断电话

    利用广播监听电话的状态. Myreceiver.java: public void onReceive(Context context, Intent intent) {// 通过一下代码可以获得到系 ...

  4. andrid之来电自动挂断电话

    先去官网下载ITelephony.aidl文件 然后在新建一个AIDL文件名字就叫ITelephony 在把下载的ITelephony.aidl替换你新建的ITelephony 重新编译 然后新建一个 ...

  5. android 自动挂断,[转]android 来电自动接听和自动挂断

    注意:android2.3版本不支持下面的自动接听方法.(会抛异常:java.lang.SecurityException: Neither user xxxxx nor current proces ...

  6. android自动接听和挂断电话

    实现android自动接听和挂断电话功能.代码如下: 添加权限 <uses-permission android:name="android.permission.CALL_PHONE ...

  7. android 自动挂断,android实现接通和挂断电话

    本文实例为大家分享了android实现接通和挂断电话的具体代码,供大家参考,具体内容如下 关键代码:[PhoneUtils类] package com.ebupt.phonerecorddemo.se ...

  8. android 挂断 电话 反射,Android实现来电自动挂断实现机制

    通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.Android.internal.telephony包并放入ITelephony.aidl文件(构 ...

  9. Android中高版本拦截到骚扰电话自动挂断的实现

    #前言 在安卓低版本中,直接可以通过API的方式来实现,在高版本中,我们不可以直接挂断电话.原因也就不说了,都清楚. #具体实现   在高版本中,我们需要用反射机制,来调用系统底层的电话服务,而我们通 ...

  10. android 自动挂断,android 来电自动接听和自动挂断(2.3以上)

    转自http://stephen830.iteye.com/blog/1181786java android 来电自动接听和自动挂断android 注意:android2.3版本不支持下面的自动接听方 ...

最新文章

  1. Adobe推出HTML5动画设计工具Edge
  2. ASP.NET Web API WebHost宿主环境中管道、路由
  3. python正则匹配数字_Python正则表达式,用于字母数字
  4. .Net下的签名与混淆
  5. 系列笔记 | 深度学习连载(2):梯度下降
  6. 用Dropout思想做特征选择,保证效果还兼顾了线上性能?
  7. Python数据类型判断常遇到的坑
  8. MySQL kill操作
  9. ios键盘弹回时顶上去得页面不会回来
  10. spring boot单元测试(转)
  11. oracle resetlog与noresetlog的作用(转载)
  12. 第9章 SportsStorePeta 完成购物车
  13. 国际化的支持--多编码问题
  14. 樱桃OTC前工程师感恩自白
  15. Linux下ffmpeg批量转换图片
  16. 鼠标左键双击计算机打开属性,鼠标左键双击变成属性怎么解决?
  17. 【记录】游戏体验报告怎么写(自我成长篇)
  18. python经典实例应用_《Python经典实例(图灵出品)》([美]史蒂文·F.洛特)【摘要 书评 试读】- 京东图书...
  19. 交通灯管理系统视频学习
  20. 【福利】免费领取企业信息查询两年VIP会员

热门文章

  1. PHP word转pdf
  2. 基于低代码平台实现物流行业的知识文档管理系统
  3. DODAF2.0之能力视角如何落地
  4. 微信或者QQ如何制作请用右上角打开浏览器
  5. 最火前端Web组态软件(可视化)
  6. 推荐!12个经典开源人脸识别数据库
  7. 批量域名解析为IP地址
  8. UE4 官方文档C++编程教程笔记
  9. 操作系统概念第四章部分作业题答案
  10. VB.NET小程序:改变图片大小