Вопрос

Я новичок на Android. Я прочитал документацию Android, но мне все еще нужны еще разъяснение. Кто-нибудь может сказать мне, что именно PendingIntent является?

Это было полезно?

Решение

А. PendingIntent это токен, который вы даете иностранному заявлению (например, NotificationManager, AlarmManager, Домашний экран AppWidgetManager, или другие 3-я партийные приложения), которые Позволяет иностранную заявку использовать разрешения вашего приложения для выполнения предопределенного куска кода.

Если вы дадите иностранное заявление о намерении, он будет выполнять ваш Intent со своими разрешениями. Но если вы дадите иностранную заявку PendingIntent, это приложение будет выполнять ваш Intent Использование разрешения вашего приложения.

Другие советы

НАМЕРЕНИЕ

Intents - это стандартный механизм обмена сообщениями в Android, который выражает намерение пользователя для выполнения некоторой работы. Они позволяют вам взаимодействовать с другими компонентами, определенными вами или операционной системой Android.

Пример:

  1. Транслировать сообщение
  2. Запустите камеру
  3. Начать сервис
  4. Запускать активность
  5. Показать веб-страницу или список контактов
  6. Наберите номер телефона или ответьте на телефонный звонок

    Они используются в обоих направлениях

1) Вам позвонить компонент

2) системой, чтобы уведомить вас о каком-то событии.

Логический рабочий процесс создания намерения обычно выглядит следующим образом:

  • Создать намерение
  • б. Добавьте о намерениях варианты-> Бывший. Какой тип намеревших мы отправляем в ОС или любые атрибуты, связанные с этим намерением, таким как текстовая строка, либо что-то, проходящее вместе с намерением
  • с. Запускать намерение

Пример реальной жизни: скажем, я просыпаюсь утром и я "НАМЕРЕВАТЬСЯ«Чтобы пойти в уборную. Я сначала придется подумать о том, чтобы пойти в уборную, но это на самом деле не добивает меня в умывальник. Я буду сначала сказать мою мозгу, чтобы сначала выйти из постели, а затем идти к Умывальник, а потом выпустите, затем иди и вымыть руки, потом иди и вытирать руки. Как только я знаю, куда я собираюсь, я отправлю команду начать, и мое тело принимает меры.

Ожидание

А. PendingIntent Определяет действие, чтобы взять в будущем. Это позволяет вам пройти будущее намерение другому приложению и позволить этому приложению выполнить это намерение, как если бы он имел same permissions as your application, будь то ваша заявка все еще вокруг, когда намерение в конечном итоге вызывается. Это токен, который вы даете иностранному приложению, которое позволяет иностранным заявке использовать разрешения вашей приложения для выполнения предопределенного куска кода.

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

Это намеренное действие, которое вы хотите выполнить, но позже. Думайте об этом, ставит намерение на лед. Причина, по которой необходимо, это потому, что намерение должно быть создано и запущено от действительного Context в вашем приложении, но есть определенные случаи, когда один недоступен в момент времени, когда вы хотите запустить действие, потому что вы технически вне контекста приложения (два общеприведенных примера запускают активность от уведомления или BroadcastReceiver.By создание А. PendingIntent Вы хотите использовать, чтобы запустить, скажем, активность, когда у вас есть Context сделать это (изнутри другой активности или услуги)

Продолжая от реального примера: скажем, я хочу принять душ, но я хочу принять душ после того, как я чищу зубы и завтракаю. Итак, я знаю, что не буду принимать душ не менее 30-40 минут. У меня все еще есть в моей голове, что мне нужно подготовить свою одежду, а затем подняться по лестнице обратно в ванную, затем раздеться, а затем душ. Однако этого не произойдет до 30-40 минут. Теперь у меня есть ожидающий намерение принять душ. Это ожидается в течение 30-40 минут.

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

Регулярное намерение -> DOES NOT REQUIRE PENDING INTENT TO BE MADE

В ожидании намерения -> REQUIRES A REGULAR INTENT TO BE CREATED

Стенчество имеет два типа Явный а также Скрытый

Явная цель: Когда ваше приложение знает, какой компонент должен позвонить, чтобы выполнить некоторые действия

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

Для более лучших и четких представлений о намерении. Вист ниже ссылки

  1. Slidenerd.com.
  2. Учебное пособие на Android
  3. Еще немного

Ожиданный намерение - это токен, который вы даете вам приложению выполнять действие в отношении имени ваших приложений Независимо Из вашего процесса применения жив или нет.

Я думаю, что документация достаточно подробна:В ожидании намеренных документов.

Просто подумайте об использовании случаев для ожидания упоминаний, как (радиовещание, расчетные сигналы тревоги) и документация станет более четкой и значимой.

В моем случае ни один из вышеперечисленных не отвечает, ни Официальная документация Google помог мне захватить концепцию PendingIntent сорт.

А потом я нашел это видео, Google I / O 2013, За пределами голубой точки сессия. Отказ В этом видео Ex-Googler Jaikumar Ganesh объясняет, что PendingIntent Есть, и это было то, что дало мне большую картину этого.

Ниже просто транскрипция выше видео (С 15:24.).

Так что же ожидают намерения?

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

Это объяснение становится более понятным с этим фрагментом кода (который включен в слайд сессии).

PendingIntent mIntent = PendingIntent.getService(...);

mLocationClient.requestLocationUpdates(locationRequest, mIntent);

public void onHandleIntent(Intent intent) {   
    String action = intent.getAction();   
    if (ACTION_LOCATION.equals(action)) {       
        Location location = intent.getParcelableExtra(...)   
    }
}

Почему Ожидание требуется? Я думал, как

  1. Почему сам приложение не может создать Intent или
  2. Почему мы не можем использовать простой Intent для той же цели.

НапримерIntent bluetoothIntent= new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

Если я отправлюсь bluetoothIntent в другое приложение, которое не имеет разрешения android.permission.BLUETOOTH_ADMIN, что получение приложения не может включить Bluetooth с startActivity(bluetoothIntent).

Ограничение преодолено, используя PendingIntent. Отказ С участием PendingIntent Принимающее приложение, не должно иметь android.permission.BLUETOOTH_ADMIN Для включения Bluetooth. Источник.

В ожидании намерения - намерение, которое начнется в какой-то момент в будущем. Нормальное намерение начинается немедленно, когда оно передано startActivity(Intent) или StartService(Intent).

Будущее намерение, которое могут использовать другие приложения.
И вот пример для создания одного:

Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, 0);

Аналогия такси

Намерение

Наимение обычно используются для отправных служб. Например:

Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
startService(intent);

Это как когда вы призываете такси:

Myself = CurrentClass
Taxi Driver = ServiceClass

В ожидании намерения

Вам нужно будет использовать что-то вроде этого:

Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
PendingIntent pi = PendingIntent.getService(parameter, parameter, intent, parameter);
getDataFromThirdParty(parameter, parameter, pi, parameter);

Теперь эта сторона начнется служба, действующая от вашего имени. Аналогия реальной жизни - это Uber или Lyft, которые являются оба компаниями такси.

Вы отправляете запрос на поездку в Uber / Lyft. Затем они пойдут вперед и позвонит одному из своих водителей от вашего имени.

Следовательно:

Uber/Lyft ------ ThirdParty which receives PendingIntent
Myself --------- Class calling PendingIntent
Taxi Driver ---- ServiceClass

Ожидание - это токен, который вы даете другому приложению (например, диспетчер уведомлений, менеджер сигнализации или другие приложения для 3-го вечеринок), что позволяет этому другому приложению использовать разрешения вашего приложения для выполнения предопределенного куска кода. Для выполнения трансляции через ожидаемое намерение, так что получите ZencentIntent через PendingIntent.getbroadcast (). Для выполнения активности через ожидающую намерение вы получаете активность через PendedIntent. Gtectactive ().

Что такое намерение?

Намерение - это определенная команда в Android, что позволяет отправлять команду на ОС Android, чтобы сделать что-то конкретное. Подумайте об этом, как действие, которое нужно иметь место. Есть много действий, которые можно сделать, например, отправку электронной почты или прикрепление фотографии в электронную почту или даже запускать приложение. Логический рабочий процесс создания намерения обычно выглядит следующим образом: a. Создать намерение б. Добавьте пункты намерений -> Ex. Какой тип намеревших мы отправляем в ОС или любые атрибуты, связанные с этим намерением, таким как текстовая строка, или что-то, перемещаемое вместе с намерением C. Запускать намерение

Пример реальной жизни: скажем, я просыпаюсь утром, и я «намереваюсь» пойти в уборную. Сначала мне придется подумать о том, чтобы пойти в уборную, но это на самом деле не доставляет меня в уборную. Затем мне придется рассказать моим мозгу, чтобы сначала встать с постели, а затем идите в уборную, а потом выпустите, потом идите и помыть руки, потом идите и вытираете руки. Как только я знаю, куда я собираюсь отправить команду начать, и мое тело принимает меры.

Что ожидается напряженность?

Продолжая от настоящего примера жизни, скажем, я хочу принять душ, но я хочу принять душ после того, как я чищу зубы и завтракаю. Поэтому я знаю, что я не буду принимать душевшую до 30-40 минут. У меня все еще есть в моей голове, что мне нужно подготовить свою одежду, а затем подняться по лестнице обратно в ванную, затем раздеться, а затем душ. Однако этого не произойдет до 30-40 минут. Теперь у меня есть ожидающий намерение принять душ. Это ожидается в течение 30-40 минут.

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

PendingIntent в основном объект, который обернет другого Intent объект. Затем его можно передавать в иностранную заявку, где вы предоставляете это приложение, право выполнить операцию, т. Е. Выполнить намерение, как если бы он был выполнен из процесса вашего собственного приложения (одинаковое разрешение и идентичность). По соображениям безопасности вы всегда должны проходить явные намерения в искупление, а не подразумевать.

 PendingIntent aPendingIntent = PendingIntent.getService(Context, 0, aIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT);

На легком языке,
1. Описание о намерении и целевых действиях для выполнения. Сначала вы должны создать намерение, а затем вы должны пройти определенный класс Java, который вы хотите выполнить, к намерению.
2. Вы можете назвать эти класс Java, который является вашим классом действий класса в соответствии с PendedIntent.getactactivity, PendedIntent.getaCtivity (контекст, int, intent [], int), pendingintent.getbradcast (контекст, int, intent, int) и undendentent. getservice (контекст, int, намерение, int); Здесь вы видите, что намерение, которое происходит с шага 1
3. Вы должны помнить, что ..., предоставив Ожидание к другому приложению, вы предоставляете это право выполнить указанную вами операцию.

Это то, что я узнал после долгого чтения.

Ожидание охватывает общее намерение с токеном, который вы даете иностранному приложению, чтобы выполнить ваше разрешение. Например:

Уведомление о вашем музыкальном приложении не может воспроизводить / приостановить музыку, если вы не дали PendingIntent отправить трансляцию, потому что ваше музыкальное приложение имеет READ_EXTERNAL_STORAGE Разрешение, которое не приложение Уведомление не. Уведомление является системной службой (так что это иностранное приложение).

Как его название предлагает .. Очистить

Вы можете посмотреть (сделать это через некоторое время). Он работает как другие намерения .. Это способ дать вашу задачу какое-то другое приложение для выполнения от вашего имени.

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

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

Если вы дадите иностранную заявку на намерение, и это приложение отправляет / транслирует намерение, которое вы дали, они будут выполнять намерение со своими собственными разрешениями. Но если вы вместо этого предоставляете иностранное заявление о ожидании ожидания, вы создали, используя свое собственное разрешение, это приложение будет выполнять содержащиеся намерение, используя разрешение вашего приложения.

Для выполнения трансляции через ожидаемое намерение, так что получите ZencentIntent через PendingIntent.getbroadcast (). Для выполнения активности через ожидающую намерение вы получаете активность через PendedIntent. Gtectactive ().

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

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

Ожидание предоставляет средства для работы приложений, даже после их процесса. Важно отметить, что даже после приложения, созданного, который был убит, был убит, этот намерение все еще может работать. Описание намерений и целевых действий для выполнения с ним. Экземпляры этого класса создаются с натяженностью (контекст, int, намерение, int), getbroadcast (контекст, int, intent, int), getservice (контекст, int, intent, int); Возвращенный объект может быть передан другим приложениям, чтобы они могли выполнить действие, которое вы описали от вашего имени в более позднее время.

Предоставляя Ожидание к другому приложению, вы предоставляете ему право выполнить операцию, которую вы указали, как если бы другое приложение было собой (с одинаковыми разрешениями и идентичностью). Таким образом, вы должны быть осторожны о том, как вы построите Ожидание: Часто, например, базовый намерен, который вы поставляете, приведет к тому, что имя компонента явно установлено на один из ваших собственных компонентов, чтобы убедиться, что его в конечном итоге отправляется там и нигде.

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

В ожидании намерения является намерением, который предоставляет все разрешения на другое заявление, чтобы сделать конкретные работы. Когда основное действие уничтожено, Android OS возвращает разрешение от него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top