заблокировать входящий звонок в blackberry - PullRequest
0 голосов
/ 30 ноября 2011

Я занимаюсь разработкой приложения, которое блокирует входящие звонки. В настоящее время, когда на устройство поступает входящий вызов, он блокируется. Но после возврата из заблокированного вызова экран переходит к экрану набора номера и отображает диалоговое окно, предупреждающее о пропущенном вызове.

Я хочу заблокировать входящий звонок, затем при зависании экран становится домашним экраном. Как мне это сделать?


Мой второй вопрос: каково разрешение на блокировку входящего звонка? Как добавить его в мое приложение? Я добавил «ApplicationPermissions.PERMISSION_IDLE_TIMER», но это бесполезно.

Edit1:

это мой код в моем приложении.

private void blockincomingcall(){
    int master_volume= net.rim.device.api.system.Alert.getVolume(); //net.rim.device.api.notification.NotificationsManag er.getMasterNotificationVolume();
    System.out.println("Master Volume "+master_volume);
    net.rim.device.api.system.Alert.setVolume(0);
    int alert_volume = Alert.getVolume();
    Main.log("Master Volume after setting "+alert_volume);
    int notifi_volume = NotificationsManager.getMasterNotificationVolume();
    Main.log("Master Volume 1 after setting "+notifi_volume);
    EventInjector.KeyCodeEvent ev1 = new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, ((char) Keypad.KEY_END), KeypadListener.STATUS_ALT, 100);
    try
    {
        Thread.sleep(1000);
    } 
    catch (InterruptedException e)
    {
        e.printStackTrace();
    }

    EventInjector.invokeEvent(ev1); 
    EventInjector.invokeEvent(ev1); 
    net.rim.device.api.system.Alert.setVolume(master_volume);
   //System.out.println("Master volume 2 "+master_volume);
    requestBackground();
}

когда он работает на os5.0, он может блокировать вызовы. но экран переключится на экран набора номера и покажет диалоговое окно уведомления о новом входящем звонке. и громкость не влияет. он работает нормально на ОС 7.0 и 6.0, но не влияет на громкость. что мне делать, спасибо

1 Ответ

0 голосов
/ 30 ноября 2011

Это хороший кусок вредоносного ПО, но в любом случае:

  1. Обнаружение входящего вызова
  2. Завершение его.
  3. Снова поместите приложение на передний план.

Для # 1 Вам необходимо обнаружить активные вызовы (используйте класс PhoneListener).№ 2 - самый сложный шаг, и вам понадобится ввод ключа для его выполнения.Это немного хакерски:

EventInjector.KeyCodeEvent ev = new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, ((char)Keypad.KEY_END), KeypadListener.STATUS_ALT);
EventInjector.invokeEvent(ev);

Точка # 3 может быть выполнена двумя различными способами:

  • 3.1: передать ссылку на ваше приложение в реализацию PhoneListenerи затем позвоните <YourUiApplication>.requestForeground()
  • 3.2: учитывая, что код в PhoneListener работает внутри приложения телефона (это должно ответить на ваш второй вопрос), позвоните:

    UiApplication.getUiApplication (). RequestBackground ();

...