Я хотел бы открыть диалоговое окно с некоторой простой информацией о нем при нажатии на живые обои. Переопределение onCommand в живых обоях Android и добавление настраиваемого диалогового окна практически прямо из документов Android (с макетом info_dialog.xml не показано):
@Override
public Bundle onCommand (String action, int x, int y, int z, Bundle extras, boolean resultRequested)
{
System.out.println(action);
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.info_dialog);
dialog.setTitle("Custom Dialog");
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
dialog.show();
return null
}
только генерирует исключение:
12-02 07:14:40.880: ERROR/AndroidRuntime(295): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
12-02 07:14:40.880: ERROR/AndroidRuntime(295): at android.view.ViewRoot.setView(ViewRoot.java:509)
12-02 07:14:40.880: ERROR/AndroidRuntime(295): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
12-02 07:14:40.880: ERROR/AndroidRuntime(295): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-02 07:14:40.880: ERROR/AndroidRuntime(295): at android.app.Dialog.show(Dialog.java:241)
Я предполагаю, что это потому, что я пытаюсь вызвать диалог из WallpaperService, а не из Activity. Переопределение метода onTouchEvent для WallpaperService.Engine дает тот же результат.
Значит ли это, что мне нужно развернуть отдельное действие для размещения диалога? Или запуск диалога с живых обоев невозможен?