Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
-
Fry
- Сообщения: 183
- Зарегистрирован: 07 дек 2013, 22:07
Сообщение
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
Сообщение
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
Сообщение
Fry » 04 янв 2014, 21:49
А чем это это отличается от того кода, который я написал?
Именно он и вызывает диалоговое окно, которое запрашивает выбор приложения для звонка. А мне нужно, чтобы использовалась сразу телефонная Android-звонилка.
ЗЫ. Разрешение в манифесте в данном случае не требуется, т.к. само приложение никому не звонит, а всего лишь содержит интент, вызывающий звонилку.
Arbeit macht Fry
-
altwin
- Сообщения: 1951
- Зарегистрирован: 13 ноя 2013, 14:46
Сообщение
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
Сообщение
Fry » 05 янв 2014, 13:57
Угу, понятно. Тогда не буду морочиться.
Я просто задумался, не будет ли это смущать пользователя. Ведь скайп больше ассоциируется со звонками внутри самого скайпа, а не городских номеров. А данный интент передаст в скайп не скайп-логин, а городской телефон.
Arbeit macht Fry
-
altwin
- Сообщения: 1951
- Зарегистрирован: 13 ноя 2013, 14:46
Сообщение
altwin » 05 янв 2014, 14:14
Fry писал(а):Угу, понятно. Тогда не буду морочиться.
Я просто задумался, не будет ли это смущать пользователя. Ведь скайп больше ассоциируется со звонками внутри самого скайпа, а не городских номеров. А данный интент передаст в скайп не скайп-логин, а городской телефон.
И правильно, морочиться нет смысла, поскольку если скайп установлен как обработчик -он позвонит(да и функция такая там есть), как любая другая звонилка(думаю пользователь потому ее и поставил). Другое дело если у данного пользователя скайп не поддерживает подобные звонки, тогда ACTION_DIALL должна решить вопрос, поскольку он не сможет обработать набор номера.
А вот если пользователь намеренно использует несколько звонилок, а вы насильно отдаете в конкретную, это явно bad practice.