挂断电话

来源:互联网 发布:淘宝买球星卡 编辑:程序博客网 时间:2024/04/30 08:20

各种来电防火墙之类的功能都可以过滤掉黑名单中的来电, 原理是响铃是判断来电号码是否存在于黑名单中, 如果存在则将其挂断.


挂断一个电话在API-10和之前版本中直接调用TelephonyManager对象的endCall方法即可, 但是之后的版本中这个API不再被公开(升级后的Android系统中还存在, 但是在Android SDK中不再提供给开发者* ). 


还想忤逆股沟的意思来调用它的话,  用反射. (有两种方法): 

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.example.hanguptest;  
  2.   
  3. import java.lang.reflect.Method;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.IBinder;  
  8. import android.telephony.TelephonyManager;  
  9. import android.view.View;  
  10. import android.widget.Toast;  
  11.   
  12. import com.android.internal.telephony.ITelephony;  
  13.   
  14.   
  15. public class MainActivity extends Activity {  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.activity_main);  
  21.     }  
  22.   
  23.     public void hangUp1(View v) throws Exception{  
  24.         Toast.makeText(getApplicationContext(), "hangUp1"0).show();  
  25.           
  26.         TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
  27.           
  28.         Class tmClazz = tm.getClass();  
  29.           
  30.         Method getITelephonyMethod = tmClazz.getDeclaredMethod("getITelephony"null);  
  31.         getITelephonyMethod.setAccessible(true);  
  32.           
  33.         ITelephony iTelephony = (ITelephony) getITelephonyMethod.invoke(tm, null);  
  34.           
  35.         iTelephony.endCall();  
  36.     }     
  37.       
  38.     /** 
  39.      * @param v 
  40.      * @throws Exception 
  41.      */  
  42.     public void hangUp2(View v) throws Exception{  
  43.         Toast.makeText(getApplicationContext(), "hangUp1"0).show();  
  44.           
  45.         Class clazz = Class.forName("android.os.ServiceManager");  
  46.           
  47.         Method getServiceMethod = clazz.getMethod("getService", String.class);  
  48.           
  49.         IBinder iBinder = (IBinder) getServiceMethod.invoke(null, TELEPHONY_SERVICE);  
  50.           
  51.         ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);  
  52.           
  53.         iTelephony.endCall();  
  54.     }     
  55.       
  56. }  

注意:要导入
com/android/internal/telephony/ITelephony.aidl
android/telephony/NeighboringCellInfo.aidl

0 0
原创粉丝点击