Uri.parse и звонок на телефон

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Uri.parse и звонок на телефон

Сообщение Fry » 24 дек 2013, 22:54

Встраиваю в приложение кнопку для осуществление звонка на телефонный номер.

Делаю это так

Код: Выделить всё

intent.setAction(intent.ACTION_VIEW);
		
		intent.setData(Uri.parse("tel:123456"));
		
		startActivity(intent);	
В итоге, выводится диалоговое окно выбора между Скайпом (приложение установлено в системе) и стандартной звонилкой.

А можно ли сделать так, чтобы сразу звонилка запускалась без этого диалога?
Arbeit macht Fry

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Uri.parse и звонок на телефон

Сообщение trew » 25 дек 2013, 10:31

Fry писал(а):Встраиваю в приложение кнопку для осуществление звонка на телефонный номер.

Делаю это так

Код: Выделить всё

intent.setAction(intent.ACTION_VIEW);
		
		intent.setData(Uri.parse("tel:123456"));
		
		startActivity(intent);	
В итоге, выводится диалоговое окно выбора между Скайпом (приложение установлено в системе) и стандартной звонилкой.

А можно ли сделать так, чтобы сразу звонилка запускалась без этого диалога?
[syntax=java] String mobileNo = "+9189000000";
String uri = "tel:" + mobileNo.trim() ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
;[/syntax]

[syntax=xml] //добавить в файл манифеста строку
<uses-permission android:name="android.permission.CALL_PHONE">
</uses-permission> [/syntax]
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Uri.parse и звонок на телефон

Сообщение Fry » 04 янв 2014, 21:49

А чем это это отличается от того кода, который я написал?

Именно он и вызывает диалоговое окно, которое запрашивает выбор приложения для звонка. А мне нужно, чтобы использовалась сразу телефонная Android-звонилка.

ЗЫ. Разрешение в манифесте в данном случае не требуется, т.к. само приложение никому не звонит, а всего лишь содержит интент, вызывающий звонилку.
Arbeit macht Fry

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Uri.parse и звонок на телефон

Сообщение altwin » 05 янв 2014, 02:37

Fry писал(а): А можно ли сделать так, чтобы сразу звонилка запускалась без этого диалога?
Нет(нет - средствами Android Framework. Пользователь именно для того установил skype и другие звонилки, чтобы иметь право выбора лишить которого вы его не можете), если это не ваш личный девайс. Скайп установлен, как приложение обрабатывающее Intent.ACTION_CALL. Когда система видит альтернативу - она предлагает выбор. Можете чекнуть -использовать всегда. Либо пойти в настройки приложений->Skype и убрать привязку внизу details screen.

P.S. хотя с Intent.ACTION_DIAL и Intent.ACTION_CALL, стоит поиграть, возможно не на все будет реагировать скайп. Но мне кажется, если в системе зарегестрированно 2 обработчика - всегда будет предлагаться выбор(как минимум при первом запуске). Но опять же вы можете определить себя в данном случае, как обработчик по умолчанию - этого никто не запрещал.
Изображение

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Uri.parse и звонок на телефон

Сообщение Fry » 05 янв 2014, 13:57

Угу, понятно. Тогда не буду морочиться.

Я просто задумался, не будет ли это смущать пользователя. Ведь скайп больше ассоциируется со звонками внутри самого скайпа, а не городских номеров. А данный интент передаст в скайп не скайп-логин, а городской телефон.
Arbeit macht Fry

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Uri.parse и звонок на телефон

Сообщение altwin » 05 янв 2014, 14:14

Fry писал(а):Угу, понятно. Тогда не буду морочиться.

Я просто задумался, не будет ли это смущать пользователя. Ведь скайп больше ассоциируется со звонками внутри самого скайпа, а не городских номеров. А данный интент передаст в скайп не скайп-логин, а городской телефон.
И правильно, морочиться нет смысла, поскольку если скайп установлен как обработчик -он позвонит(да и функция такая там есть), как любая другая звонилка(думаю пользователь потому ее и поставил). Другое дело если у данного пользователя скайп не поддерживает подобные звонки, тогда ACTION_DIALL должна решить вопрос, поскольку он не сможет обработать набор номера.

А вот если пользователь намеренно использует несколько звонилок, а вы насильно отдаете в конкретную, это явно bad practice.
Изображение

Ответить