Открыть меню опций из сервиса? - PullRequest
0 голосов
/ 31 марта 2012

Я занимаюсь разработкой приложения для Android, в котором я должен открыть меню опций из сервиса без нажатия любой кнопки. Я пробовал это

Activity.openOptionsMenu ();

но показывает ошибку «Невозможно сделать статическую ссылку на нестатический метод openOptionsMenu () из типа Activity»

Любая помощь! Спасибо.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

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

Во-вторых, не все устройства будут иметь меню параметров при переходе на Android 3.0 +.

В-третьих, даже для устройств Android 1.x и 2.x единственное время, когда должно открываться меню параметров, - это когда пользователь нажимает кнопку MENU. Все остальное очень подозрительно с точки зрения UX.

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

0 голосов
/ 31 марта 2012

Я сам не пробовал, но для вызова любых объектов, связанных с деятельностью, предпочтительно добавить объект BroadcastReciever в упражнение, зарегистрировать его под заданным именем, и onRecieve() должен открыть меню

private BroadcastReceiver menuopenreciever = new BroadcastReceiver() {

@Override
public void onReceive(Context arg0, Intent arg1) {
           //open menu here


}

}

зарегистрируйте получателя следующим образом:

IntentFilter filter = new IntentFilter();
filter.addAction("net.yourapplication.menuopenreciever");
registerReceiver( menuopenreciever, filter);

из службы вызова: sendBroadcast(new Intent("net.yourapplication.menuopenreciever"));

Я не пробовал, но дайте мне знатьнадеюсь это поможет

...