2014-01-21 5 views
0

Я хочу разработать приложение для Android, где я могу позвонить по номеру, а затем управлять ярким светом с цифрами от 1 до 9 клавиатуры. Ключ 1 показывает синий свет, клавиша 2 показывает желтый свет и т. Д.Пользовательская телефонная клавиатура Android

С обычной клавиатурой телефона он отлично работает. Но я хочу создать пользовательскую клавиатуру, где я могу увидеть цвета моего удаленного света. Я успешно создал цветную клавиатуру. Но теперь, когда я начинаю телефонный звонок, вместо моей пользовательской красочной клавиатуры появляется оригинальная клавиатура телефона.

Я начинаю телефонный звонок так:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:555123456)); 
startActivity(callIntent); 

Как я могу контролировать телефонный звонок с моей пользовательской клавиатурой?

+1

проверить эту ссылку http://stackoverflow.com/questions/2959063/calling-custom-android-keyboard-in-my-application – PSK

ответ

3

Вы можете использовать java-отражения, чтобы получить экземпляр класса com.android.intenal.telephony для выполнения вызова.

private void call(String number) { 
    Class<TelephonyManager> c = TelephonyManager.class; 
    Method getITelephonyMethod = null; 
    try { 
     getITelephonyMethod = c.getDeclaredMethod("getITelephony", 
       (Class[]) null); 
     getITelephonyMethod.setAccessible(true); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    try { 
     TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     Object iTelephony; 
     iTelephony = (Object) getITelephonyMethod.invoke(tManager,(Object[]) null); 
     Method dial = iTelephony.getClass().getDeclaredMethod("call", String.class); 
     dial.invoke(iTelephony, number); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

Я тестировал его с Android 2.2 и 4.1. Он по-прежнему открывает диалоговое окно Android по умолчанию в верхней части моей пользовательской клавиатуры. Так что это не работает для меня :-(Как я могу управлять телефонным звонком с помощью собственной клавиатуры? – user4500

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