2013-03-20 1 views
0

Я пытаюсь вызвать визитную карточку через код и хочу отправить следующие URI намерения:Как андроид обрабатывать + -знак в PHONENUMBER

accessnumber + пауза + PhoneNumber + #

Телефонный номер поступает из списка адресов, но как мне обрабатывать + (как в коде выхода), потому что это, например, в Штатах 011, в Европе 00. И я думаю, что я не могу просто отправить его на намерение. Есть ли способ справиться с этим?

Проблема заключается в том, что телефонная карточка требует, например, плюса как 00 или 011.

String uri = "tel:" + Uri.encode(phonenumber) 

try { 
       Intent intentCall = new Intent(Intent.ACTION_CALL); 
       intentCall.setData(Uri.parse(uri)); 
       startActivity(intentCall); 
       } catch (ActivityNotFoundException e)  { } 
+0

Почему вы не можете просто отправить это намерение? Ты пробовал? – Tushar

+0

«Просто попытка» кажется мне источником множества ошибок приложений, которые полагаются на неофициально поддерживаемое поведение, которое не гарантируется в разных версиях. Проверка документации почти всегда лучше. – Jules

+0

Кроме того, если посмотреть, работает ли он в этом случае, это потребует тестирования в нескольких странах, что было бы непомерно дорогостоящим ... – Jules

ответ

1

Android is documented использовать rfc3966 совместимых телефонов URIs. RFC3966 указывает, что символ «+» используется для международного набора, поэтому Android должен распознавать символ «+» и иметь дело с ним соответствующим образом.

+0

Проблема в том, что я отправляю его после номера доступа к телефонной карте, поэтому мне придется настроить его на код выхода. Я надеялся, что, возможно, андроид автоматически скорректировал + код выхода на этом языке, есть ли способ для этого? – Diego

+0

Хм ... Я вижу проблему. Символ «+» действителен только в начале числа, поэтому он не гарантированно работает (даже если это происходит в некоторых версиях, это может быть не в других). Как вы получаете номера своей телефонной карты? Можете ли вы получить код выхода одинаково (возможно, некоторые провайдеры телефонных карт могут использовать другой код выхода для локального пользователя, например, подумайте о том, чтобы пользователь в еврозоне звонил через поставщика карт, чья служба настроена по американскому стандарту, поэтому просить провайдера карты, что делать, может быть, просто лучшая вещь)? – Jules

+0

Да, наверное. Было бы неплохо, если бы у сим, например, был код выхода. С тех пор это не совместимо, если это еще одна карта. – Diego