android - Как программно принимать входящий телефонный звонок?

Я хочу получать входящие звонки программно из моих приложений.

Я пробовал какой-то код, но он не работает.

Ниже приведен мой код для завершения вызова.

TelephonyManager tm = (TelephonyManager) ctx
            .getSystemService(Context.TELEPHONY_SERVICE);

    try {
        if (tm == null) {
            // this will be easier for debugging later on
            throw new NullPointerException("tm == null");
        }


        tm.getClass().getMethod("endCall").invoke(tm);//answerRingingCall

    } catch (Exception e) {
        Log.e("sdsd", "Unable to use the Telephony Manager directly.", e);
    }


}

Используя этот код, я могу завершить любой входящий вызов, но когда я изменяю "endCall" на "answerRingingCall". это не получает вызов от моего приложения, не могли бы вы помочь, как решить эту проблему.

Что касается разрешения, я не могу применить это разрешение к приложениям.

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

См. прикрепленный снимок экрана.

введите здесь описание изображения

он показывает, что разрешение предоставляется только системным приложениям. Как это решить.

заранее спасибо


person Roadies    schedule 03.06.2015    source источник
comment
проверьте это - androideasylessons.blogspot.in/2012/09 /   -  person Narendra Singh    schedule 03.06.2015
comment
stackoverflow.com/questions/15481524/   -  person Jitesh Upadhyay    schedule 03.06.2015
comment
Любая идея, этот код будет работать на Lollipop.   -  person Roadies    schedule 03.06.2015
comment
@DroidWormNarendra Ваше решение не работает :(   -  person Roadies    schedule 03.06.2015
comment
@JiteshUpadhyay Посмотрите мой прикрепленный скриншот, ваше решение не работает.   -  person Roadies    schedule 03.06.2015


Ответы (1)


Это может помочь

private class CallStateListener extends PhoneStateListener {
  @Override
  public void onCallStateChanged(int state, String incomingNumber) {
      switch (state) {
          case TelephonyManager.CALL_STATE_RINGING:
          // called when someone is ringing to this phone

          Toast.makeText(ctx, 
                  "Incoming: "+incomingNumber, 
                  Toast.LENGTH_LONG).show();
          break;
      }
  }
}

tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
person Srishti Roy    schedule 03.06.2015
comment
Можно ли принимать входящие звонки в Android L? - person Roadies; 03.06.2015