1

I have an imageView that is the set up for my icon as seen here:

<ImageView
    android:id="@+id/bwidgetOpen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"
    android:contentDescription="@string/desc"/>

And I am trying to allow the user to change it. I allow them to do this in a class I made called Personalize and give them the ability to choose an image from their gallery and then show that image in a preview (another imageView) before they hit a button called "Set Image" and then the picture that they chose is sent to the activity to set the icon like this:

private void setIconImageInWidget() {
// TODO Auto-generated method stub
Log.d("Personalize", "setIconImageInWidget() called");
Intent i = getIntent();
//Convert bitmap to byte array to send back to activity
// See: http://stackoverflow.com/questions/11010386/send-bitmap-using-intent-android
scaleDownBitmapForIcon(b2, 500, this.getBaseContext());
Log.d("Personalize", "Scale Bitmap Chosen For Icon");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
b2.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[]byteArray = stream.toByteArray();

i.putExtra("myIconBitmap", byteArray);
setResult(RESULT_ICON, i);
finish();
} 

Then it is set here:

         else if(requestCode == RESULT_ICON){
         byte[] byteArray = data.getByteArrayExtra("myIconBitmap"); 
         Bitmap myIcon = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
         setBackgroundImageForIcon(myIcon); 
         Log.d("Drag_and_Drop_App", "Icon is set");
     }

((setBackgroundImageForIcon class (UPDATED):

     private void setBackgroundImageForIcon(Bitmap bitmap) { 
     ImageView ivICON = (ImageView) findViewById(R.id.bwidgetOpen);

     Drawable dq = new BitmapDrawable(getResources(), bitmap); 

     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
     ivICON.setImageDrawable(dq);
     } else { 
     ivICON.setImageDrawable(dq);
     Log.d("Drag_and_Drop_App", "Icon is set");
     } 
     } 

))

This gets no errors and returns the right request code but it doesn't seem to change the icon at all. I've also made it so that when the user exits the program, it saves the image path and then reloads it on the onResume() method.

So my problem is that the icon is not being set to the user's chosen image. Why is this?

If I am going about this the wrong way or need to implement some more code please let me know.

ADDED:

I probably really should have added this when I wrote this question but... Just so it is known, this is set up as a widget so here is my AppWidgetProvider as well:

package com.example.awesomefilebuilderwidget;
IMPORTS
public class AFBWidget extends AppWidgetProvider{

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    Random r = new Random();
    int randomInt = r.nextInt(1000000000);
    String rand = String.valueOf(randomInt);

    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++){
        int awID = appWidgetIds[i];
        RemoteViews v = new RemoteViews(context.getPackageName(), R.layout.widget);
        v.setTextViewText(R.id.tvwidgetUpdate, rand);
           Intent configIntent = new Intent(context, Drag_and_Drop_App.class);

            PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);

            v.setOnClickPendingIntent(R.id.bwidgetOpen, configPendingIntent);

        appWidgetManager.updateAppWidget(awID, v);
    }

}

@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onDeleted(context, appWidgetIds);
    Toast.makeText(context, "Thanks for checking us out!", Toast.LENGTH_SHORT).show();
}
}
user2909006
  • 253
  • 6
  • 22
  • Are you changing the background of a linearlayout or an imageview? You're setting the background of a linearlayout in method setBackgroundImageForIcon() – chinglun Nov 17 '13 at 05:43
  • Ah thank you I forgot to change that. Yeah I'm changing the imageView, not the background. I changed my coding to the above (check updated question) but it still doesn't seem to change the icon any. – user2909006 Nov 17 '13 at 17:13

1 Answers1

0

I have posted an answer before. It takes a photo from camera intent ( Youcould provide gallery image ), then shows it before saving it and then you have a two textviews named DONE and CANCEL and in their listeners you can do whatever you want to .

Android camera to take multiple photos

Community
  • 1
  • 1
Rahul Gupta
  • 5,275
  • 8
  • 35
  • 66