Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Общее

Намерение (Intent) – это механизм для описания одной операции – выбрать фотографию, отправить письмо, сделать звонок, запустить браузер и перейти по указанному адресу. В Android-приложениях многие операции работают через намерения.

Наиболее распространённый сценарий использования намерения – запуск другой активности в своём приложении. Об этом можно почитать в соответствующем уроке.

https://www.youtube.com/watch?v=ytcreators

Но это не единственный вариант использования намерения. Также можно использовать для объявления о запуске активности или сервиса, направленных на выполнение каких-либо действий (как правило, речь о работе с определенной частью данных) или для передачи уведомлений о том, что произошло некое событие (или действие).

Намерения могут применяться для трансляции сообщений по системе. Любое приложение способно зарегистрировать широковещательный приёмник и отслеживать эти намерения с возможностью на них реагировать. Это позволяет создавать приложения, использующие событийную модель, в основе которой лежат внутренние, системные или сторонние события, передаваемые внешними программами.

Android транслирует намерения для объявления о системных событиях, например об изменениях в состоянии сетевого подключения или в уровне заряда батареи. Системные приложения в Android, такие как программы дозвона или управления SMS, регистрируют компоненты, отслеживающие заданные намерения, например входящий звонок или получено новое SMS-сообщение, и соответствующим образом реагируют на них.

Требования к устройствам и платёжным терминалам

Системные требования весьма демократичны: смартфон должен работать на Android версии 4.4 KitKat или выше, и, разумеется, иметь чип NFC непосредственно для совершения платежей. Но есть несколько важных ограничений, которые связаны с обеспечением конфиденциальности платёжных данных. Во-первых, в устройстве должна быть установлена официальная, сертифицированная Google прошивка.

Developer-версии и сторонние прошивки системой не поддерживаются. Во-вторых, загрузчик должен быть заблокирован, а root-права — отключены. Как можно обойти эти ограничения, читайте в нашем материале. В-третьих, не поддерживается несколько моделей смартфонов (полный список можно найти здесь), а на устройствах Samsung должен быть отключён сервис Knox.

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Если все требования соблюдены, то с помощью Android Pay можно будет расплачиваться в подавляющем большинстве терминалов, поддерживающих бесконтактную оплату. Например, популярный в российских магазинах VeriFone VX 820 поддерживает технологию от Google. Тем не менее полной гарантией станет наличие на терминале одного из следующих логотипов.

Apple Pay, запущенный в России 4 октября 2016 года, также работает с большинством терминалов бесконтактной оплаты, однако технологию поддерживает не так много устройств. Это все iPhone, выпущенные в 2014 году или позже (то есть имеющие чип NFC), оба поколения Apple Watch и ноутбуки с сенсором Touch ID (для покупок в интернете).

Samsung Pay, действующий в России с 29 сентября 2016 года, аналогично поддерживается всеми флагманами линеек S и Note, начиная с 2015 года (с NFC на борту), модельным рядом A 2016 и 2017 годов выпуска, а также «умными» часами Gear S3. Тем не менее, южнокорейский сервис выгодно отличается от конкурентов технологией Magnetic Secure Transmission (MST), на которую у Samsung есть эксклюзивные права.

Однако Samsung устанавливает и существенное ограничение: корректно работать в России их платёжный сервис будет только на устройствах, прошедших сертификацию «Ростеста», то есть на «белых» аппаратах. В случае, если девайс «серый» или приобретённый за рубежом, придётся немного пошаманить: установить российскую прошивку (регион SER) или же установить российский фреймворк, а затем и сам сервис Samsung Pay.

Неявные намерения


Intent intent = new Intent(HelloWorld.this, AboutActivity.class);
startActivity(intent);

В намерении мы явно указали имя класса активности во втором параметре. Данный класс у нас прописан в манифесте, и система, просматривая манифест, запустит нужную активность. Вот почему у нас сначала программа завершалась с ошибкой. Когда мы создали класс, но не прописали его в манифесте, то система не понимала, чего от неё хотят.

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Первый параметр – это Context. Активность является подклассом Context, поэтому мы можем использовать её как HelloWorld.this, или укороченную запись this.

Таким образом, ваше приложение может иметь десять активностей, и вы можете вызвать любую из них, зная её имя класса. Это явный вызов, где вы явно указываете имя класса для запуска.

После вызова метода создастся новая активность, которая запустится или возобновит свою работу, переместившись на вершину стека активностей.


// У первой активности
ArrayList{amp}lt;File{amp}gt; fileList = new ArrayList{amp}lt;File{amp}gt;();
 
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("FILES_LIST", fileList);
startActivity(intent);

// У второй активности
ArrayList{amp}lt;File{amp}gt; filelist = 
    (ArrayList{amp}lt;File{amp}gt;)getIntent().getSerializableExtra("FILES_LIST");

По похожему сценарию можно передать простые типы и строки.

При работе с действиями, возвращающими данные, нельзя использовать метод startActivity(), поскольку он не возвращает результат. Если вы хотите вернуть данные, то можете использовать метод startActivityForResult(), приспособленный для работы с обратными вызовами.

Существует также неявный вызов активности. В этом случае при создании намерения мы используем не имя класса, а указываем параметры action, data, category с определёнными значениями. Система анализирует, что мы тут такого понаписали и начинает подбирать подходящий вариант для запуска. Например, если указали в параметрах адрес веб-страницы, то скорее всего хотим запустить браузер и почитать новость, что Кот Ларри уволен с поста “главного мышелова” резиденции британского премьера (нехороший премьер-министр, пусть только в Москву сунется).

https://www.youtube.com/watch?v=ytabout

Впрочем, мы отвлеклись. Комбинация значений в параметрах определяют цель, которую мы хотим достичь. Это может быть открытие ссылки, отправка письма, набор телефонного номера и т.п.

К слову сказать, мы тоже можем прописать в своей активности в фильтрах намерений (Intent Filter) набор тех же параметров: action, data, category. И тогда у пользователя может запуститься не только стандартный браузер, но и наша программа (Кот Матроскин в таких случаях говорил: Подумаешь, я еще и вышивать могу… и на машинке тоже..).

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Иными словами, если параметры намерения совпадают с условиями нашего фильтра, то наше приложение (активность) будет вызвано. Система сканирует активности всех установленных приложений, и если находится несколько подходящих активностей, то Android предоставляет пользователю выбор, какой именно программой следует воспользоваться. Если найдётся только одна подходящая активность, то, естественно, никакого диалога для выбора не будет, и активность запустится автоматически.

Неявные намерения — это механизм, позволяющий запрашивать анонимные компоненты приложений с помощью действий. Вы можете попросить систему запустить активность, выполняющую заданное действие, не зная ничего ни о самой активности, ни о её приложении. Например, мы указываем телефонный номер, но понятия не имеем, как программой дозвона пользуется пользователь на своём телефоне. Но это уже не наша проблема, пусть пользователь сам выбирает, как ему звонить по номеру, который мы можем ему предоставить.

Создавая новое неявное намерение для передачи в метод startActivity(), необходимо назначить действие, которое должно выполниться, а также при желании указать вспомогательный путь URI к тем данным, что нужно обработать. Вы также можете передать дополнительные данные в другую активность, используя параметр намерения extras.

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

С какими банками и картами работает

На момент старта в России платёжная система работает с картами Visa и MasterCard следующих банков: АК БАРС Банк, Альфа-банк, Бинбанк, ВТБ-24, МТС Банк, Открытие (и входящие в его состав Рокетбанк и Точка), Промсвязьбанк, Райффайзен банк, Россельхозбанк, Русский стандарт, Сбербанк, Тинькофф банк, а также с сервисом Яндекс.Деньги. С самого запуска технологию поддерживает подавляющее большинство крупных российских офлайн-ритейлеров.

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Есть основания полагать, что в ближайшем будущем список пополнится, как это происходило и с сервисами конкурентов. Apple Pay в первый месяц в России сотрудничал только с девятью банками, а на момент публикации материала в списке значатся уже 14 банков (включая Сбербанк), плюс сервис Яндекс.Деньги. У Samsung поначалу тоже была договорённость с небольшим количеством банков, а подключать можно было только MasterCard. Сегодня же технологию поддерживает и Visa, и в общей сложности 15 действующих на территории России банков, плюс те же Яндекс.Деньги.

Защита данных

Технология защиты Android Pay ничем принципиально не отличается от таковой в Apple Pay или Samsung Pay. В основе лежит принцип токенизации, когда для каждой транзакции в «облаке» формируется уникальный набор символов — токен — вместо реальных реквизитов подключённой к сервису карты оплаты. Это не означает, что для каждой оплаты с помощью Android Pay потребуется подключение к интернету.

Токены формируются заранее при синхронизации приложения с серверами, хранятся в памяти устройства и «достаются» оттуда при совершении оплаты. Реальные данные зашифровываются, хранятся на серверах Google и используются только при формировании токенов, то есть без привязки к любой из транзакций. Однако большое количество поддерживаемых устройств от разных производителей означает, что Google будет защищать данные только у себя на сервере и на уровне ОС, в отличие от Apple и Samsung, которые под эти цели в каждом устройстве выделяют специальное хранилище.

Система криптозащиты Android Pay

Разумеется, защищён и сам процесс оплаты. В Android Pay не обязательно сканировать палец, как на устройствах Apple (где пароль запрашивается только после нескольких неудачных попыток сканирования), что логично, учитывая отсутствие дактилоскопа во многих Android-устройствах. Сервис Google использует тот же способ защиты, что и блокировка экрана, будь то сканер отпечатка, ПИН-код, графический ключ или распознавание лица. В случае отключения блокировки экрана на устройстве Android Pay автоматически стирает данные о подключённой карте — их придётся вводить заново.

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

В случае потери, или если устройство было украдено, можно удалённо заблокировать его, сменить пароль или стереть все данные с помощью сервиса Android Device Manager на любом подключённом к Сети компьютере.

Apple Pay небезосновательно считает достаточными для защиты пользовательской платёжной информации токенизацию, Touch ID и сервис удалённой блокировки потерянного или украденного устройства Find My Phone. Поэтому помимо них явно не использует никакие технологии.

Samsung Pay, помимо токенов и биометрических сенсоров, предлагает собственную программу защиты Knox. Она также шифрует данные карты и отслеживает активность, предупреждая о подозрительных операциях на счёте.

Константы действия

  • ACTION_ANSWER — Открывает активность, которая связана с входящими звонками. Это действие обрабатывается стандартным экраном для приёма звонков;
  • ACTION_CALL — инициализирует обращение по телефону;
  • ACTION_DELETE — Запускает активность, с помощью которой можно удалить данные, указанные в пути URI внутри намерения;
  • ACTION_EDIT — Отображает данные для редактирования пользователем
  • ACTION_INSERT — Открывает активность для вставки в Курсор (Cursor) нового элемента, указанного с помощью пути URI. Дочерняя активность, вызванная с этим действием, должна вернуть URI, ссылающийся на вставленный элемент
  • ACTION_HEADSET_PLUG – Подключение наушников
  • ACTION_MAIN — Запускается как начальная активность задания
  • ACTION_PICK – Загружает дочернюю Активность, позволяющую выбрать элемент из источника данных, указанный с помощью пути URI. При закрытии должен возвращаться URI, ссылающийся на выбранный элемент. Активность, которая будет запущена, зависит от типа выбранных данных, например при передаче пути content://contacts/people вызовется системный список контактов;
  • ACTION_SEARCH — Запускает активность для выполнения поиска. Поисковый запрос хранится в виде строки в дополнительном параметре намерения по ключу SearchManager.QUERY
  • ACTION_SEND — Загружает экран для отправки данных, указанных в намерении. Контакт-получатель должен быть выбран с помощью полученной активности. Используйте метод setType, чтобы указать тип MIME для передаваемых данных. Эти данные должны храниться в параметре намерения extras с ключами EXTRA_TEXT или EXTRA_STREAM, в зависимости от типа. В случае с электронной почтой стандартное приложение в Android также принимает дополнительные параметры по ключам EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC и EXTRA_SUBJECT. Используйте действие ACTION_SEND только в тех случаях, когда данные нужно передать удаленному адресату (а не другой программе на том же устройстве)
  • ACTION_SENDTO — Открывает активность для отправки сообщений контакту, указанному в пути URI, который передаётся через намерение
  • ACTION_SYNC — Синхронизирует данные сервера с данными мобильного устройства
  • ACTION_TIMEZONE_CHANGED – Смена часового пояса
  • ACTION_VIEW — Наиболее распространённое общее действие. Для данных, передаваемых с помощью пути URI в намерении, ищется наиболее подходящий способ вывода. Выбор приложения зависит от схемы (протокола) данных. Стандартные адреса http: будут открываться в браузере, адреса tel: — в приложении для дозвона, geo: — в программе Google Maps, а данные о контакте — отображатся в приложении для управления контактной информацией
  • ACTION_WEB_SEARCH — Открывает активность, которая ведет поиск в интернете, основываясь на тексте, переданном с помощью пути URI (как правило, при этом запускается браузер)
  • CATEGORY_BROWSABLE — активность может быть безопасно вызвана браузером, чтобы отобразить ссылочные данные, например, изображение или почтовое сообщение
  • CATEGORY_HOME — активность отображает Home Screen, первый экран, который пользователь видит после включения устройства и загрузки системы, или когда нажимает клавишу HOME
  • CATEGORY_LAUNCHER — активность может быть начальной деятельностью задания из списка приложений в группе Application Launcher устройства

Покупки в интернете и приложениях

Для совершения покупок на сайте или в приложении с помощью Android Pay ритейлер должен разместить специальную кнопку. Само собой, информация для разработчиков по этой части, равно как и по всему сервису, находится в открытом доступе. При этом данные защищаются точно так же, как и при оплате на терминале, поэтому беспокоиться об утечке информации по-прежнему не стоит.

Нажав на кнопку Pay с зелёным роботом, пользователь попадает в приложение Android Pay, где подтверждает платёж, и покупка практически мгновенно считается оплаченной. Разумеется, девайс должен соответствовать требованиям, а пользователь должен быть зарегистрирован в системе Android Pay для успешного платежа.

У Apple и Samsung покупки внутри приложений реализованы точно так же. Магазин добавляет на свой сайт и в приложение соответствующую кнопку, и пользователь может оплатить покупку, не то что не заглядывая в бумажник — даже не выходя из текущего приложения. Разумеется, кнопка будет присутствовать только при использовании техники, соответствующей требованиям Apple или Samsung соответственно.

Как начать пользоваться Android Pay

Подробный обзор Android Pay: где работает, как защищён, как начать пользоваться || Intent pay android

Для начала выполним некоторые манипуляции, чтобы работать с биллинг-сервисом в нашем приложении.

Вольный перевод официальной документации

IInAppBillingService.aidl это файл Android Interface Definition Language (AIDL), который определяет интерфейс взаимодействия с сервисом In-app Billing Version 3. Вы будете использовать этот интерфейс для выполнения биллинг-запросов с помощью

IPC

-вызовов.

Чтобы получить файл AIDL:
Откройте Android SDK Manager.
В SDK Manager найдите и раскройте секцию Extras.
Выберите Google Play Billing Library.
Нажмите Install packages чтобы выполнить установку.
Перейдите в папку src/main вашего проекта и создайте папку с именем aidl.
Внутри этот папки создайте пакет com.android.vending.billing.
Скопируйте файл IInAppBillingService.aidl из папки %anroid-sdk%/extras/google/play_billing/ в только что созданный пакет src/main/aidl/com.android.vending.billing

    IInAppBillingService inAppBillingService;

    ServiceConnection serviceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            inAppBillingService = IInAppBillingService.Stub.asInterface(service);
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            inAppBillingService = null;
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent serviceIntent = 
                new Intent("com.android.vending.billing.InAppBillingService.BIND");
        serviceIntent.setPackage("com.android.vending");
        bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
        ...
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (serviceConnection != null) {
            unbindService(serviceConnection);
        }
    }
    class InAppProduct {

        public String productId;
        public String storeName;
        public String storeDescription;
        public String price;
        public boolean isSubscription;
        public int priceAmountMicros;
        public String currencyIsoCode;

        public String getSku() {
            return productId;
        }
        
        String getType() {
            return isSubscription ? "subs" : "inapp";
        }
        
    }

    List{amp}lt;InAppProduct{amp}gt; getInAppPurchases(String type, String... productIds) throws Exception {
        ArrayList{amp}lt;String{amp}gt; skuList = new ArrayList{amp}lt;{amp}gt;(Arrays.asList(productIds));
        Bundle query = new Bundle();
        query.putStringArrayList("ITEM_ID_LIST", skuList);
        Bundle skuDetails = inAppBillingService.getSkuDetails(
                3, context.getPackageName(), type, query);
        ArrayList{amp}lt;String{amp}gt; responseList = skuDetails.getStringArrayList("DETAILS_LIST");
        List{amp}lt;InAppProduct{amp}gt; result = new ArrayList{amp}lt;{amp}gt;();
        for (String responseItem : responseList) {
           JSONObject jsonObject = new JSONObject(responseItem);
            InAppProduct product = new InAppProduct();
            // "com.example.myapp_testing_inapp1"
            product.productId = jsonObject.getString("productId");
            // Покупка
            product.storeName = jsonObject.getString("title");
            // Детали покупки
            product.storeDescription = jsonObject.getString("description");
            // "0.99USD"
            product.price = jsonObject.getString("price");
            // "true/false"
            product.isSubscription = jsonObject.getString("type").equals("subs");
            // "990000" = цена x 1000000
            product.priceAmountMicros = 
                    Integer.parseInt(jsonObject.getString("price_amount_micros"));
            // USD
            product.currencyIsoCode = jsonObject.getString("price_currency_code");
            result.add(product);
        }
        return result;
    }

С помощью этого метода мы можем загрузить данные о доступных покупках.

        // для покупок
        List{amp}lt;InAppProduct{amp}gt; purchases = 
                getInAppPurchases("inapp", "com.example.myapp_testing_inapp1");
        // для продписок
        List{amp}lt;InAppProduct{amp}gt; subscriptions =
                getInAppPurchases("subs", "com.example.myapp_testing_subs1");

Теперь мы можем прямо из приложения получить список покупок и информацию про них. Цена будет указана в той валюте, в которой пользователь будет платить. Эти методы надо вызывать в фоновом потоке, так как сервис в процессе может загружать данные с серверов Google. Как использовать эти данные — на ваше усмотрение. Вы можете отобразить цены и названия продуктов из полученного списка, а можете названия и цены указать в ресурсах приложения.

Самое время теперь что-то купить!

https://www.youtube.com/watch?v=ytpress

To verify that your app responds to the intents that you want to support, you can use the
adb tool to fire specific intents:

  1. Set up an Android device for development,
    or use a virtual device.
  2. Install a version of your app that handles the intents you want to support.
  3. Fire an intent using adb:
    adb shell am start -a {amp}lt;ACTION{amp}gt; -t {amp}lt;MIME_TYPE{amp}gt; -d {amp}lt;DATA{amp}gt; 
      -e {amp}lt;EXTRA_NAME{amp}gt; {amp}lt;EXTRA_VALUE{amp}gt; -n {amp}lt;ACTIVITY{amp}gt;
    

    For example:

    adb shell am start -a android.intent.action.DIAL 
      -d tel:555-5555 -n org.example.MyApp/.MyActivity
    
  4. If you defined the required intent filters, your app should handle the intent.

For more information, see
ADB Shell Commands.

Первым делом необходимо установить приложение Android Pay из официального магазина Google или из apk-файла. Интерфейс приложения прост, интуитивен и схож с другими сервисами компании, так что привыкать ни к чему не придётся. Само собой, можно добавить несколько карт и назначить основную для оплаты по умолчанию.

После можно смело идти в магазин или на сайт, которые поддерживают бесконтактные платежи. Для оплаты в супермаркете достаточно разблокировать смартфон и поднести его к терминалу без запуска приложения — деньги будут списаны с карты по умолчанию.

Итоги

Несмотря на то, что рынок мобильных платежей в России уже более полугода занят Apple и Samsung (и не стоит забывать про приложения банков, тоже позволяющие совершать платежи с помощью смартфона), Android Pay имеет очень хорошие шансы по меньшей мере на равных занять место среди прочих сервисов, и тому есть три причины.

Android Pay

Первая — сам рынок мобильных платежей растёт во всём мире, в том числе в России, а значит говорить об окончательной сегментации слишком рано. Вторая причина — уже упоминавшееся количество Android-устройств, которыми пользуется существенно большее количество людей, чем флагманами Apple и Samsung. Наконец, третья — это ставка на программы лояльности, которую делает Google. Ещё до запуска Android Pay в России стало известно о скидках на проход в московский метрополитен и на МЦК с помощью приложения.

Пользователям остаётся надеяться, что это далеко не последняя программа лояльности, а также на то, что банки и магазины будут охотно идти на сотрудничество с Google. Это не только значительно упростит жизнь покупателям с Android-смартфонами, но и подстегнёт здоровую конкуренцию на рынке, тем самым развивая экономическую ситуацию в целом.

Плюсы:

  • количество поддерживаемых устройств;
  • несколько способов защиты платежей;
  • активная программа лояльности.

Минусы:

  • не работает на сторонних прошивках;
  • нет специальной области защиты данных в устройствах.

Автор текста: Макс Дворак

Фильтры намерений и запуск заданий

Если намерение запрашивает выполнение какого-либо действия с определённым набором данных, то системе нужно уметь выбрать приложение (или компонент) для обслуживания этого запроса. На помощь приходят фильтры намерений, которые используются для регистрации активностей, сервисов и широковещательных приёмников в качестве компонентов, способных выполнять заданные действия с конкретным видом данных. С помощью этих фильтров также регистрируются широковещательные приёмники, настроенные на трансляцию намерением заданного действия или события.

Задействуя фильтры намерений, приложения объявляют, что они могут отвечать на действия, запрашиваемые любой другой программой, установленной на устройстве. Чтобы зарегистрировать компонент приложения в качестве потенциального обработчика намерений, нужно добавить тег {amp}lt;intent-filter{amp}gt; в узел компонента в манифесте.

В фильтре намерений декларируется только три составляющих объекта Intent: действие, данные, категория. Дополнения и флаги не играют никакой роли в принятии решения, какой компонент получает намерение.

Фильтр такого вида в элементе {amp}lt;action{amp}gt; помечает активность, как запускаемую по умолчанию. Элемент {amp}lt;category{amp}gt; заставляет значок и метку для деятельности отображаться на панели Application Launcher, давая пользователям возможность запускать задание и возвращаться к этому заданию в любое время после того, как оно было запущено.

Внутри узла Фильтра намерений можно использовать такие теги (и соответствующие атрибуты).

Другие примеры использования намерений

Запускаем активность по щелчку кнопки.


Intent intent  = new Intent("ru.alexanderklimov.helloworld.second.SECOND");
// intent.putExtra("something", 2); // по желанию
startActivity(intent);

Другие примеры.

Получить электронный адрес или номер телефона из Контактов (ACTION_PICK)

Добавление нового контакта (ContactsContract.Intents.SHOW_OR_CREATE_CONTACT)

Выбрать MP3-файл (ACTION_GET_CONTENT)

Android Pay

Выбрать видеофайл (ACTION_GET_CONTENT)

Выбрать картинку из Галереи (ACTION_GET_CONTENT)

Запуск карт Google

Загрузить изображения в ImageView из галереи

Запускаем приложение Галерея и выбираем картинку

Запускаем приложение Загрузки (DownloadManager.ACTION_VIEW_DOWNLOADS)

Включить Bluetooth (BluetoothAdapter.ACTION_REQUEST_ENABLE)

Управление настройками Wi-Fi-соединениями (ACTION_WIFI_SETTINGS, ACTION_WIFI_IP_SETTINGS, ACTION_WIRELESS_SETTINGS)

Управление настройками NFC и Android Beam (Settings.ACTION_NFC_SETTINGS, Settings.ACTION_NFCSHARING_SETTINGS)

Android Pay

Сообщить системе о включение/выключении автономного режима (Airplane Mode) (ACTION_AIRPLANE_MODE_CHANGED)

Открываем окно настроек для автономного режима (Airplane Mode) (ACTION_AIRPLANE_MODE_SETTINGS)

Запуск приложения Батарея (ACTION_POWER_USAGE_SUMMARY)

https://www.youtube.com/watch?v=upload

Отслеживание изменения заряда батареи (ACTION_BATTERY_CHANGED)

Отслеживание низкого уровня заряда батареи (ACTION_BATTERY_LOW и ACTION_BATTERY_OKAY)

Окно настроек Battery saver (API 22) (Settings.ACTION_BATTERY_SAVER_SETTINGS)

Настройки | Программы | Экономия заряда батареи (Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)

Android Pay

Диалоговое окно для включения приложения в белый список без экономии заряда батареи (Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)

Открыть окно «Моё местоположение» из системного приложения Настройки – пример, ещё пример (ACTION_LOCATION_SOURCE_SETTINGS)

Программное включение/выключение GPS (GPS_ENABLED_CHANGE)

Открыть окно «Экран» из системного приложения Настройки (Settings.ACTION_DISPLAY_SETTINGS)

Отправить SMS через намерение ACTION_VIEW

Отправить SMS через намерение ACTION_SENDTO

Выбрать мелодию (action.RINGTONE_PICKER)

Запустить установку приложения (ACTION_INSTALL_PACKAGE)

Android Pay

Удалить программу (ACTION_DELETE и ACTION_UNINSTALL_PACKAGE)

Отправить письмо (ACTION_SEND)

Открыть страницу приложения в Google Play (ACTION_VIEW)

Открыть Календарь (ACTION_VIEW)

Добавляем события в Календарь (ACTION_INSERT)

Свернуть приложение или Показать Домашний экран (ACTION_MAIN CATEGORY_HOME)

Запустить заставку (DayDream) (ACTION_MAIN)

Окно настроек DayDream (API 18) (Settings.ACTION_DREAM_SETTINGS)

Android Pay

Определить момент окончания перезагрузки устройства (BOOT_COMPLETED)

https://www.youtube.com/watch?v=ytadvertise

Автозапуск приложения при загрузке (BOOT_COMPLETED)

Периодическое срабатывание каждую минуту (TIME_TICK)

Отключение устройства от питания (ACTION_POWER_DISCONNECTED)

Открываем документ (выбираем картинку) Android 4.4 (Kitkat) (ACTION_OPEN_DOCUMENT)

Создание нового документа Android 4.4 (Kitkat) (ACTION_CREATE_DOCUMENT)

Android Pay

Просмотр папок и файлов в файловых хранилищах – ACTION_OPEN_DOCUMENT_TREE (Android 5.0)

Запускаем встроенный диктофон (MediaStore.Audio.Media.RECORD_SOUND_ACTION)

Запустить приложение Настройки с экранами Приложения и О приложении и другие окна настроек (ACTION_MANAGE_APPLICATIONS_SETTINGS и ACTION_APPLICATION_DETAILS_SETTINGS, Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS, Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, Settings.ACTION_MANAGE_WRITE_SETTINGS)

https://www.youtube.com/watch?v=ytcopyright

Подключаемся к док-станции (ACTION_DOCK_EVENT)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *