2013-04-13 3 views
2

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

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

Из вышеприведенного изображения при нажмите на заказ Analog Clock виджет открытой первой активности в моем приложении, а затем я хочу показать виджет, потому что от моей деятельности я буду настроить некоторые параметры для этого виджета. Как я могу открыть активность в первую очередь?

ответ

6

Виджеты могут иметь специальную активность, когда они добавляются на главный экран. Эта активность может вернуть намерение УСПЕХА с идентификатором виджета, полученным в методе «onCreate» активности или RESULT_CANCELED, если вы хотите предотвратить создание самого виджета.

Необходимо просто добавить класс активности конфигурации в атрибут android:configure в формате appwidget-provider и добавить фильтр намерений с android.appwidget.action.APPWIDGET_CONFIGURE к объявлению активности в AndroidManifest. Это подробно описано в http://developer.android.com/guide/topics/appwidgets/index.html#Configuring

Намерение получили имеет виджет ID:

public void onCreate(Bundle savedInstanceState) { 
    ... 
    int widgetID = getIntent().getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
    ... 
} 

, а затем вы можете либо закончить свою деятельность с setResult(RESULT_CANCELED); или подтвердить создание виджетов с:

Intent resultValue = new Intent(); 
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID); 
    setResult(RESULT_OK, resultValue); 

Вы можете сделать все настройки вашего виджета из этой активности.

С другой стороны, если вы хотите выполнить другие настройки, которые необходимы только иметь место один раз для всех ваших виджетов случаев, вы можете сделать то в onEnabled методы вашего класса AppWidgetProvider, как описаны в http://developer.android.com/guide/topics/appwidgets/index.html#AppWidgetProvider

+0

где я должен получить int widgetId? я имею в виду, в какой деятельности я должен заявить? – NagarjunaReddy

+0

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

+0

В основном действии для вашего виджета вы получите тот же идентификатор виджетов в методе 'onUpdate', чтобы вы могли легко получить данные, связанные с этим конкретным объектом, из активности configure. – vggonz

Смежные вопросы