android – Problem with setImageViewUri widget

Question:

I tried to create a widget with configuration that displays an image on the external storage, everything works as it should, but when I restart the device the widgets don't load, they just show the app icon.

Here is the Provider code

package aloogle.pokedex.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;
import aloogle.pokedex.R;

public class WidgetShortcut extends AppWidgetProvider {
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[]appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        for (int i = 0; i < appWidgetIds.length; i++) {
            int appWidgetId = appWidgetIds[i];

            final Intent intent = new Intent(Intent.ACTION_MAIN, null);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            final ComponentName cn = new ComponentName("aloogle.pokedex", "aloogle.pokedex.activity.ActivitySplashScreen");
            intent.setComponent(cn);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_shortcut);

            PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
            views.setOnClickPendingIntent(R.id.imageView1, pending);

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

E do Config

package aloogle.pokedex.widget;

import android.app.Activity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RemoteViews;
import android.widget.Toast;
import java.io.File;
import aloogle.pokedex.R;

public class WidgetShortcutConfigure extends Activity {

    private WidgetShortcutConfigure context;
    private int widgetID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.widget_shortcut_configure);
        setResult(RESULT_CANCELED);
        context = this;

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            widgetID = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                    AppWidgetManager.INVALID_APPWIDGET_ID);
        }

        final AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
        final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_shortcut);

        final EditText et = (EditText)findViewById(R.id.editText1);
        Button b = (Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String idpk = et.getText().toString();
                File art = new File(Environment.getExternalStorageDirectory() + "/DroiDex/art/sa_" + idpk + ".png");
                String files = art.toString();
                if (art.exists()) {
                    Uri imgUri = Uri.parse(files);
                    views.setImageViewUri(R.id.imageView1, imgUri);
                    Intent intent = new Intent(WidgetShortcutConfigure.this, aloogle.pokedex.activity.ActivitySplashScreen.class);
                    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

                    views.setOnClickPendingIntent(R.id.imageView1, pending);
                    widgetManager.updateAppWidget(widgetID, views);

                    Intent resultValue = new Intent();
                    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
                    setResult(RESULT_OK, resultValue);
                    finish();
                } else {
                    Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.widgetshortcuttoastwarning), Toast.LENGTH_LONG);
                    toast.show();
                }
            }
        });
        setTitle(getString(R.string.addpokemon));
    }
}

So it is before restarting and so on after .

Does anybody know how to solve this? I know the problem is with onUpdate, but I don't know the code

Answer:

Implement these methods:

@Override
public void onReceive(Context context, Intent intent) 
{
    super.onReceive(context, intent);
    }

public void onEnabled(Context context) 
{
    super.onEnabled(context);
    }

Put Log.d inside (including onUpdate) and see their calling order in logcat.

What is executed you put to update the images correctly.

Scroll to Top