2015-05-11 3 views
1

Я хочу сделать приложение, которое может звонить с использованием библиотеки Linphone, но почему, когда я хочу позвонить по номеру (этот номер можно вызвать с помощью обычных телефонных приложений), он всегда указывается : "ERROR_USER_UNAVAILABLE"Call State Always: «ERROR_USER_UNAVAILABLE» Менеджер Linphone Android

private void call(String ticket_id) { 
    updateState("CALLING"); 
    Log.d(TAG_CALL, "try to call"); 
    LinphoneManager.getInstance().newOutgoingCall(msisdn, ticket_id); 
    callingAttemptHandler.postDelayed(callingAttempt, 1000 * 30); 
} 

@Override 
public void onCallStateChanged(LinphoneCall call, State state, String message) { 
    Log.d(TAG_CALL, "state: " + state.toString() + " value: " + state.value()); 
    Log.d(TAG_CALL, "message: " + message); 

    int stateValue = state.value(); 
    switch (stateValue) { 
    case 1:// incoming received 
      // startActivity(new Intent(this, IncomingCallActivity.class)); 
     startActivity(new Intent(this, WhenIncomingActivity.class)); 
     break; 

    case 2:// outgoing init 
     break; 

    case 3:// outgoing progress 
     break; 

    case 4:// outgoing ringing 
     break; 

    case 5:// outgoing early 
     break; 

    case 6:// connected 
     break; 

    case 7:// connected streaming 
     break; 

    case 8:// pausing 
     break; 

    case 9:// paused 
     break; 

    case 10:// resuming 
     break; 

    case 12:// error: User not found, User is temporary unavailable, Request 
      // timeout 
     if (CallResponse.ERROR_BUSY.equalsIgnoreCase(message)) { 
      displayCustomToast(getString(R.string.call_error_user_busy), Toast.LENGTH_LONG); 
     } else if (CallResponse.ERROR_INCOMPATIBLE.equalsIgnoreCase(message)) { 
      displayCustomToast(getString(R.string.error_incompatible_media), Toast.LENGTH_LONG); 
     } else if (CallResponse.ERROR_NOT_FOUND.equalsIgnoreCase(message)) { 
      displayCustomToast(getString(R.string.call_error_user_not_found), Toast.LENGTH_LONG); 
     } else if (CallResponse.ERROR_USER_UNAVAILABLE.equalsIgnoreCase(message) 
       || CallResponse.ERROR_SERVICE_UNAVAILABLE.equalsIgnoreCase(message)) { 
      displayCustomToast(getString(R.string.call_error_user_unavailable), Toast.LENGTH_LONG); 
     } else { 
      displayCustomToast(getString(R.string.call_error_user_unavailable), Toast.LENGTH_LONG); 
     } 
     break; 

    case 13:// call end: Call Ended, Call Declined, Call Terminated 
     if (CallResponse.CALL_DECLINED.equalsIgnoreCase(message)) { 
      displayCustomToast(getString(R.string.call_end_declined), Toast.LENGTH_LONG); 
     } 
     break; 

    case 15:// updated by remote 

     break; 

    case 18:// call released 
     break; 

    default: 
     break; 
    } 
} 

У кого-нибудь есть решение?

ответ

0

После запроса провайдера провайдер сообщит мне, что номер телефона больше не активен.

Так что состояние ответа CallResponse.ERROR_NOT_FOUND или CallResponse.ERROR_NOT_FOUND может быть вызвано тем, что используемый номер больше не активен.