2012-02-06 2 views
2

Я пытаюсь сделать что мой телефон автоматически отвечать на звонки, но выглядит как Google удалить разрешения для данного способа: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

+0

Да, конечно, я сделал, я даже загрузите это приложение на свой телефон, но оно тоже не работает. – user758030

+0

Это работает для 2.3.3? – user1163234

ответ

-1

Измените следующее

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

в

context.sendBroadcast(buttonDown);. 

же с buttonUp. Потому что sendOrderedBroadcast() может быть прерван другим ресивером.

Смежные вопросы