Intereting Posts
SetColorFilter не работает в Xamarin.Android TextWatcher вызывается, даже если текст установлен перед добавлением наблюдателя Сохранить информацию о пользователе facebook для использования в другой деятельности Какой язык init.rc в android? Android AVD Manager: невозможно создать новое определение устройства (java.lang.NullPointerException) Измените настройку разрешения камеры программно в android Полосы прокрутки планшета Gmail с прозрачной панелью действий OkHTTP и Picasso не работают вместе Веб-просмотр Android: Внесите локальный файл Javascript на удаленную веб-страницу Проблема с Android ActivityGroup Разница между упакованным переключателем и разреженным переключателем dalvik opcode Платформа Android: отличия большого размера 800×480 от планшета 1024×600 Как динамически изменять высоту ActionBar из фрагмента Изменение цвета холста Android, не теряя при этом никаких рисунков Ограничить EditText, чтобы принимать только Urls в Android

Пожалуйста, помогите с очень простым щелчком кнопки виджета Android. Очень расстроен. :(

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

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

Это то, что у меня есть до сих пор:

public class simpleclick extends AppWidgetProvider { /** Called when the activity is first created. */ @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; Toast.makeText(context, "doing on update", Toast.LENGTH_SHORT).show(); for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; Intent intent = new Intent(context, simpleclick.class); intent.setAction("ham"); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main); views.setOnClickPendingIntent(R.id.Timm, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); } } //@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Toast.makeText(context, "action is: " + intent.getAction(), Toast.LENGTH_SHORT).show(); super.onReceive(context, intent); } } 

Мой манифест:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tblabs.simpleclick" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name="simpleclick"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/simpleclick" /> </receiver> </application> <uses-sdk android:minSdkVersion="5" /> </manifest> ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tblabs.simpleclick" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name="simpleclick"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/simpleclick" /> </receiver> </application> <uses-sdk android:minSdkVersion="5" /> </manifest> 

Я был бы признателен за помощь!

Спасибо, Венди

Как писали bigstones , вам нужно использовать трансляцию. Образец кода:

 protected PendingIntent getPendingSelfIntent(Context context, String action) { Intent intent = new Intent(context, getClass()); intent.setAction(action); return PendingIntent.getBroadcast(context, 0, intent, 0); } views.setOnClickPendingIntent(R.id.Timm, getPendingSelfIntent(context, "ham")); 

Здесь полная версия:

 package com.automatic.widget; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.widget.RemoteViews; public class Widget extends AppWidgetProvider { private static final String SYNC_CLICKED = "automaticWidgetSyncButtonClick"; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews remoteViews; ComponentName watchWidget; remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); watchWidget = new ComponentName(context, Widget.class); remoteViews.setOnClickPendingIntent(R.id.sync_button, getPendingSelfIntent(context, SYNC_CLICKED)); appWidgetManager.updateAppWidget(watchWidget, remoteViews); } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); if (SYNC_CLICKED.equals(intent.getAction())) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews remoteViews; ComponentName watchWidget; remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); watchWidget = new ComponentName(context, Widget.class); remoteViews.setTextViewText(R.id.sync_button, "TESTING"); appWidgetManager.updateAppWidget(watchWidget, remoteViews); } } protected PendingIntent getPendingSelfIntent(Context context, String action) { Intent intent = new Intent(context, getClass()); intent.setAction(action); return PendingIntent.getBroadcast(context, 0, intent, 0); } }