- Полный список
- Как создать ярлык для быстрого набора или прямого сообщения контакта, в Android — Смартфон — 2021
- Table of Contents:
- Как добавить ярлык для прямого набора номера контакта на смартфоне Android
- Как добавить ярлык для прямой переписки по номеру контакта на вашем смартфоне Android
- Для скольких людей у вас есть прямой набор или ярлык прямого сообщения?
- Как создать ярлык iPhone для переадресации
- Как создать ярлык на рабочем столе для облегчения доступа к Gmail
- Как включить страницу быстрого набора Firefox
- Андроид : Выносим контакты на рабочий стол смартфона (Декабрь 2021).
Полный список
— обрабатываем нажатия на виджет
Продолжаем тему виджетов. Виджет, который показывает информацию – это хорошо, это мы теперь умеем. Но кроме этого виджет еще умеет реагировать на нажатия.
Т.к. прямого доступа к view-компонентам виджета мы не имеем, то использовать, как обычно, обработчики нажатий не получится. Но RemoteViews, используемый нами для работы с view, позволяет настроить реакцию view на нажатие. Для этого он использует PendingIntent. Т.е. мы можем на нажатие на виджет повесить вызов Activity, Service или BroadcastReceiver. В этом уроке сделаем непростой, но достаточно содержательный пример, отражающий различные техники реагирования на нажатия.
Создадим виджет, состоящий из двух текстов и трех зон для нажатий.
Первый текст будет отображать время последнего обновления, а второй – кол-во нажатий на третью зону нажатия.
Первая зона будет по клику открывать конфигурационное Activity. Это пригодится в том случае, когда вы хотите дать пользователю возможность донастроить виджет после установки. Конфигурировать будем формат отображаемого в первой строке времени.
Вторая зона нажатия будет просто обновлять виджет, тем самым будет меняться время в первом тексте.
Каждое нажатие на третью зону будет увеличивать на единицу счетчик нажатий и обновлять виджет. Тем самым будет меняться второй текст, отображающий текущее значение счетчика.
Для простоты, конечно, можно было разбить этот пример на три отдельных виджета. Но я решил сделать все в одном, чтобы наглядно показать, что один виджет может совершать разные действия в ответ на нажатия на разные view.
Создадим проект без Activity:
Project name: P1201_ClickWidget
Build Target: Android 2.3.3
Application name: ClickWidget
Package name: ru.startandroid.develop.p1201clickwidget
Layout-файл виджета widget.xml:
Первые два TextView – это тексты, а последние три – зоны нажатия.
Layout-файл для конфигурационного экрана config.xml:
Поле для ввода формата даты и кнопка подтверждения
Класс конфигурационного экрана ConfigActivity.java:
Тут ничего нового для нас нет.
В onCreate мы извлекаем и проверяем ID экземпляра виджета, для которого открылся конфигурационный экран. Далее формируем отрицательный ответ на случай нажатия кнопки Назад. Читаем формат времени и помещаем его в EditText. Читаем значение счетчика и, если это значения еще нет в Preferences, то пишем туда 0.
В onClick мы сохраняем в Preferences формат из EditText, обновляем виджет, формируем положительный ответ и выходим.
Код обновления виджета пока закоментен, т.к. у нас еще нет класса MyWidget. Сейчас создадим и можно будет раскоментить.
Класс виджета MyWidget.java:
А вот тут уже немного посложнее.
В onUpdate мы обновляем все требующие обновления экземпляры, в onDelete подчищаем Preferences после удаления экземпляров.
Метод updateWidget отвечает за обновления конкретного экземпляра виджета. Здесь мы настраиваем внешний вид и реакцию на нажатие.
Сначала мы читаем настройки формата времени (которые были сохранены в конфигурационном экране), берем текущее время и конвертируем в строку согласно формату. Также из настроек читаем значение счетчика. Создаем RemoteViews и помещаем время и счетчик в соответствующие TextView.
Далее идет настройка обработки нажатия. Механизм несложен. Сначала мы готовим Intent, который содержит в себе некие данные и знает куда он должен отправиться. Этот Intent мы упаковываем в PendingIntent. Далее конкретному view-компоненту мы методом setOnClickPendingIntent сопоставляем PendingIntent. И когда будет совершено нажатие на этот view, система достанет Intent из PendingIntent и отправит его по назначению.
В нашем виджете есть три зоны для нажатия. Для каждой из них мы формируем отдельный Intent и PendingIntent.
Первая зона – по нажатию должно открываться конфигурационное Activity. Создаем Intent, который будет вызывать наше Activity, помещаем данные об ID (чтобы экран знал, какой экземпляр он настраивает), упаковываем в PendingIntent и сопоставляем view-компоненту первой зоны.
Вторая зона – по нажатию должен обновляться виджет, на котором было совершено нажатие. Создаем Intent, который будет вызывать наш класс виджета, добавляем ему action = ACTION_APPWIDGET_UPDATE, помещаем данные об ID (чтобы обновился именно этот экземпляр), упаковываем в PendingIntent и сопоставляем view-компоненту второй зоны.
Третья зона – по нажатию должен увеличиваться на единицу счетчик нажатий. Создаем Intent, который будет вызывать наш класс виджета, добавляем ему наш собственный action = ACTION_CHANGE, помещаем данные об ID (чтобы работать со счетчиком именно этого экземпляра), упаковываем в PendingIntent и сопоставляем view-компоненту третьей зоны.
Теперь при нажатии на первую зону будет вызван конфигурационный экран. По нажатию на вторую будет обновлен виджет. А вот нажатие на третью ни к чему не приведет, т.к. наш класс MyWidget знает, как работать с Intent с action вида ACTION_APPWIDGET_UPDATE, ACTION_APPWIDGET_DELETED и пр. А мы ему послали свой левый action.
Значит надо научить его понимать наш Intent. Вспоминаем, что MyWidget – это расширение AppWidgetProvider, а AppWidgetProvider – это расширение BroadcastReceiver. А значит, мы можем сами реализовать метод onReceive, в котором будем ловить наш action и выполнять нужные нам действия.
В методе onReceive мы обязательно выполняем метод onReceive родительского класса, иначе просто перестанут работать обновления и прочие стандартные события виджета. Далее мы проверяем, что intent содержит наш action, читаем и проверяем ID из него, читаем из настроек значение счетчика, увеличиваем на единицу, пишем обратно в настройки и обновляем экземпляр виджета. Он прочтет новое значение счетчика из настроек и отобразит его.
Вы обратили внимание, что при создании PendingIntent мы использовали ID экземпляров виджета в качестве requestCode? Поясняю, зачем это сделано. Допустим, мы создаем два экземпляра виджета. Первый создается и создает свои PendingIntent для обновления, счетчика и конфигурирования. Эти PendingIntent содержат action и extra-данные. Теперь создается второй экземпляр. Он также пытается создать свои PendingIntent с теми же action и другими extra-данными. Тут мы вспоминаем прошлый урок, а именно дефолтное поведение системы. Если создаваемый PendingIntent похож на существующий, то создаваемый станет копией уже существующего. Т.е. все PendingIntent второго экземпляра получат extra-данные из Intent первого. В extra-данных у нас лежит ID экземпляра. Значит второй экземпляр виджета будет обновлять время/счетчик и открывать конфигурационный экран первого экземпляра. Если интересно, можете поставить нули вместо ID при создании PendingIntent и убедиться, что так все и будет. Чтобы избежать этого, используем requestCode. Надеюсь, что этот момент понятен, т.к. для этого и была написана бОльшая часть прошлого урока )
Теперь не забудьте раскаментить код обновления виджета в классе ConfigActivity в методе onClick. Иначе ничего работать не будет.
Создадим файл метаданных xml/widget_metadata.xml:
Виджет будет вертикальным. Число 0 – в updatePeriodMillis говорит о том, что виджет не будет обновляться системой. Мы его сами обновлять будем.
Осталось прописать классы в манифесте. Должен получиться примерно такой фрагмент кода:
Если для Receiver не указана иконка и текст, он возьмет их из приложения.
Т.е. наш виджет будет иметь стандартную системную иконку и имя приложения – ClickWidget.
Все сохраняем и инсталлим приложение.
Для наглядности давайте создадим пару экземпляров виджета. Настройки в конфигурационном экране пока оставляйте дефолтными.
Виджеты отображают время, когда они были последний раз обновлены и счетчик нажатий.
Теперь понажимайте Update на обоих виджетах, время будет обновляться. А, нажимая Count, вы меняете значение счетчика, и виджет это отображает. Вместе со счетчиком, кстати, актуализируется и время, т.к. оно актуализируется при каждом обновлении виджета.
Нажав на Config, мы попадаем в конфигурационный экран. Здесь можно изменить формат отображаемого времени. Настроим так, чтобы первый экземпляр отображал только часы и минуты
а второй – секунды
Предлагаю вам самостоятельно допилить виджет так, чтобы при нажатии на Count обновлялся только счетчик, а время не менялось. Также попробуйте добавить еще одну (четвертую) зону, по нажатию на которую открывался бы, например, www.google.com в браузере.
На всякий случай проговорю явно следующее. В нашем примере мы при нажатиях вызывали через Intent свои же классы. Но, думаю, всем понятно, что можно вызывать все, что позволит Intent, никаких ограничений нет.
На следующем уроке:
— создаем виджет со списком
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
Как создать ярлык для быстрого набора или прямого сообщения контакта, в Android — Смартфон — 2021
Table of Contents:
Вам нужен ярлык на вашем смартфоне Android для прямого набора или отправки сообщения человеку? Возможно, вам придется быстро позвонить коллеге, или вашей жене, или вашему отцу. Это можно сделать с легкостью, если кто-то покажет вам, как это сделать. Данная процедура не является интуитивно понятной, если вы не сделали это раньше или не видели, как это делает кто-то другой. Вот почему, чтобы помочь вам, мы создали это руководство, которое показывает, как добавить ярлык прямого набора на вашем смартфоне Android:
ПРИМЕЧАНИЕ. Это руководство было создано с использованием Android 7 Nougat, но оно работает так же и в Android 5 Lollipop и Android 6 Marshmallow. На вашем смартфоне все может выглядеть немного иначе, особенно если производитель вашего устройства изменил пользовательский интерфейс по умолчанию. Тем не менее, все этапы одинаковы, независимо от бренда. Если вы будете следовать нашим инструкциям, у вас все получится, независимо от того, как все выглядит на вашем смартфоне.
Как добавить ярлык для прямого набора номера контакта на смартфоне Android
Сначала перейдите на домашний экран смартфона Android и перейдите на страницу, где вы хотите добавить ярлык. Затем нажмите и удерживайте где-нибудь на пустом месте на этой странице. Страница свернута, и вы видите несколько новых ярлыков внизу экрана. Нажмите Виджеты .
Вам будет показан список виджетов из всех приложений, установленных на вашем смартфоне Android. Прокрутите вниз, пока не найдете контакты и виджеты, предлагаемые этими приложениями. Здесь вы можете выбрать один из трех типов виджетов:
- Контакт — реклама ярлыка для выбранного контакта. При нажатии на этот ярлык вы видите все контактные данные выбранного вами человека и можете инициировать такие действия, как телефонные звонки, сообщения и т. Д.
- Прямой набор — объявление ярлыка, который при нажатии сразу же набирает номер, выбранный для выбранного контакта.
- Прямое сообщение — объявление ярлыка, который при нажатии открывает новое сообщение для этого человека на номер, который вы хотите.
Нажмите и удерживайте Прямой набор, и отобразится предварительный просмотр главного экрана и страницы, на которой вы были ранее. Перетащите виджет « Прямой набор» туда, где вы хотите разместить его на главном экране.
Отпустите виджет Прямой набор, где вы хотите, и затем Android отобразит список всех ваших контактов. Найдите человека, которому вы хотите этот ярлык прямого набора, и выберите номер телефона, который вы хотите использовать для звонка ему или ей.
После того, как вы нажмете на номер телефона, который хотите использовать, на главном экране добавится ярлык, куда вы его перетащили.
Как добавить ярлык для прямой переписки по номеру контакта на вашем смартфоне Android
Вам также может потребоваться ярлык для быстрой отправки SMS или MMS-сообщения человеку, с которым вы часто общаетесь, например, вашему ребенку, супругу или конкретному коллеге. Процедура для этого такая же, как и для добавления ярлыка прямого набора . Разница лишь в том, что вам нужно выбрать виджет Прямое сообщение .
После того, как вы выбрали человека, которому вы хотите отправить текст, и его номер телефона, добавляется ярлык « Прямое сообщение», куда вы перетаскиваете его на домашний экран.
Для скольких людей у вас есть прямой набор или ярлык прямого сообщения?
Многие люди ценят возможность быстрого набора номера для своих близких или людей, с которыми они часто работают. Прежде чем закрыть эту статью, мы бы хотели узнать, сколько таких ярлыков у вас есть на вашем смартфоне Android. У нас есть только несколько, в основном для очень близких членов семьи, таких как наш супруг и дети. Как насчет вас?
Как создать ярлык iPhone для переадресации
IPhone от Apple включает в приложение «Настройки» параметр, позволяющий легко включать и выключать переадресацию вызовов. Это удобно, если вы хотите, чтобы каждый звонок переадресовывался на другой номер, .
Как создать ярлык на рабочем столе для облегчения доступа к Gmail
Если загрузка Gmail из вашей системы по-прежнему слишком велика, когда вы спешите проверить свою электронную почту, создайте ярлык на рабочем столе, который запускает веб-браузер и загружает сайт .
Как включить страницу быстрого набора Firefox
Команда Firefox, должно быть, обратила внимание на Opera. Эта секретная функция новых вкладок быстрого набора добавляет функциональность к открытому в противном случае открытию новых вкладок.
Андроид : Выносим контакты на рабочий стол смартфона (Декабрь 2021).
Источник