Я создаю виджет, который будет использоваться, среди прочего, для просмотра нескольких фотографий. Для этой цели я создал сервис, который будет обрабатывать намерения. Мне удалось добавить одну фотографию в виджет, но я не знаю, как изменить фотографию на другую после нажатия на первую. Я подозреваю, что это должно быть сделано в ImageUpdateService в методе onClick. Это мой первый виджет, поэтому я прошу вашего понимания.
Есть мой MainWidget. java:
package pl.admindoit.widgetapp;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;
public class MainWidget extends AppWidgetProvider {
//update all widgets
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i : appWidgetIds) {
startBrowsing(context, appWidgetManager, i);
}
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main_widget);
Intent widgetClickIntent = new Intent(ImageUpdateService.ACTION_ON_CLICK);
PendingIntent pendingIntentViewClick = PendingIntent.getBroadcast(context, 0, widgetClickIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.imageView, pendingIntentViewClick);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
//start www
private void startBrowsing(Context ctx,
AppWidgetManager appWidgetManager, int widgetID) {
RemoteViews widgetView = new RemoteViews(ctx.getPackageName(), R.layout.main_widget);
Uri uri = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
PendingIntent pIntent = PendingIntent.getActivity(ctx, widgetID, intent, 0);
widgetView.setOnClickPendingIntent(R.id.btn_www, pIntent);
appWidgetManager.updateAppWidget(widgetID, widgetView);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Intent intent = new Intent(context, ImageUpdateService.class);
context.startService(intent);
}
@Override
public void onDisabled(Context context) {
context.stopService(new Intent(context, ImageUpdateService.class));
super.onDisabled(context);
}
}
И ImageUpdateService. java:
package pl.admindoit.widgetapp;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.Toast;
public class ImageUpdateService extends Service {
static final String ACTION_ON_CLICK = "android.MyWidget.ACTION_ON_CLICK";
private final static IntentFilter intentFilter;
static {
intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_ON_CLICK);
}
public final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(ACTION_ON_CLICK)) {
onCLick(context);
}
}
};
@Override
public void onCreate() {
super.onCreate();
registerReceiver(broadcastReceiver, intentFilter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCLick(Context context) {
//TODO
// doSomething
}
public ImageUpdateService() {
}
}
В моем рисовании у меня есть три изображения: cat1, cat2 и cat3.