Как передать значение из виджета главного экрана в приложение? - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю с проектом Android, для которого я хочу создать виджет.Используя этот виджет, я должен контролировать некоторые действия элемента управления (то есть, нажав кнопку «Стоп» в виджете, приложение должно прекратить работу какого-либо действия).Для этого мне нужно передать какое-то значение приложению из виджета по нажатию кнопки.Пока я могу сделать следующее:

  • открыть действие по нажатию кнопки
  • открыть URL по нажатию кнопки
  • сделать тост на главном экране наНажатие кнопки

Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Я успешно завершил эту часть моего проекта. Существует два сценария

  1. Когда мы передаем значения, приложение будет запущено.То есть мы передаем значения непосредственно в действие
  2. . Запустив приложение, мы можем передать значения. Здесь мы используем сервис

В обеих ситуациях мы можем использовать два метода

  1. Использование sharedpreferences
  2. Использование Intent(putExtra())

Если вы хотите передать значение непосредственно действию (приложение будет запущено во время передачизначение) вы можете использовать второй вышеупомянутый метод и вызывать действие (какое действие вы хотите запустить) следующим образом:

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
    Intent intent = new Intent(context,MainActivity.class);
    PendingIntent pendingIntent = PendingIntent(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.PunchIn, pendingIntent);
    appWidgetManager.updateAppWidget(appWidgetId, views);

этот код для запуска MainActivity с помощью нажатия кнопки виджета.В Inten вы можете использовать putExtra () для передачи values.better, чтобы не использовать sharedpreference здесь.

Для передачи значения без запуска приложения вы можете вызвать сервис из кнопки виджета, затем вы можете добавить любой код, который хотите добавитьв файле service.class.Вы можете позвонить в службу следующим образом:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
Intent intent = new Intent(context,MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.PunchIn, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);

из этого класса обслуживания вы можете передать значения в приложение, используя SharedPrefernce или putExtra().

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

Я новичок в Android, я работал с виджетом в моем проекте для этого много исследовали это заняло много времени.так что подумал о публикации этого, который поможет любому, как яесли вы нашли какую-либо ошибку / ошибку, пожалуйста, исправьте me.happy, чтобы исправить мою ошибку.Спасибо

0 голосов
/ 29 ноября 2018

Я не уверен с этой проблемой, потому что я еще не пробовал виджет.

При нажатии кнопки отправьте сообщение Boardcast.И ваше приложение должно запустить службу для получения сообщения.Вы можете указать свои значения в сообщении?

Хотите, чтобы эта ссылка дала вам несколько идей: http://rxwen.blogspot.com/2012/10/communication-between-android-widget.html

Есть похожий вопрос: Android - Связь между виджетом и егоприложение

Удачи!

...