2012-02-06 81 views
2

我试图让我的手机自动接听电话,但看起来像谷歌删除权限是这样的:Android:如何自动接听电话?

TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
Class c = Class.forName(tm.getClass().getName()); 
Method m = c.getDeclaredMethod("getITelephony"); 
m.setAccessible(true); 
ITelephony telephonyService; 
telephonyService = (ITelephony)m.invoke(tm); 
telephonyService.silenceRinger(); 
telephonyService.answerRingingCall(); 

所以,我在这里找到其他办法: http://code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java

// Simulate a press of the headset button to pick up the call 
Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);    
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK)); 
context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED"); 

// froyo and beyond trigger on buttonUp instead of buttonDown 
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);    
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); 
context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED"); 

但它不也不行。 我想念什么?

+0

您是否添加了正确的[清单权限?](http://code.google.com/p/auto-answer/source/browse/trunk/AndroidManifest.xml) – adneal 2012-02-06 06:09:27

+0

是的,我当然了,我甚至在手机上加载这些应用程序,但它不起作用。 – user758030 2012-02-06 07:27:42

+0

这是否适用于2.3.3? – user1163234 2012-03-11 15:56:11

回答

-1

更改以下

context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED"); 

context.sendBroadcast(buttonDown);. 

同样与buttonUp。因为sendOrderedBroadcast()可以被其他接收器中止。