Изменение пи c после нажатия на него. Обзор изображений в ImageUpdateService. Виджет - PullRequest
0 голосов
/ 22 января 2020

Я создаю виджет, который будет использоваться, среди прочего, для просмотра нескольких фотографий. Для этой цели я создал сервис, который будет обрабатывать намерения. Мне удалось добавить одну фотографию в виджет, но я не знаю, как изменить фотографию на другую после нажатия на первую. Я подозреваю, что это должно быть сделано в 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.

...