views:

18

answers:

1

Hi all.

I'm working on an app that, upon instillation of certain apps will send a message to them to register with a content provider. It all works fine, the strings are stored, but I can't get the byte[] blob (a bitmap .png file) to convert properly from within onRecieve() in the broadcastreciever.

@Override
public void onReceive(Context context, Intent intent) {
    Log.v("xxxxxxxxxxxxx", "onReceive, from within RegisterApp");
    this.context = context;
    ContentValues values = new ContentValues();
    values.put("app_name", getAppName());
    values.put("app_description", getAppDescription());

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    Bitmap b = getAppIcon();
    b.compress(Bitmap.CompressFormat.PNG, 0, stream);
    byte[] blob = stream.toByteArray();

    values.put("icon", blob);

    context.getContentResolver().insert(
            Uri.parse("content://blahblahblahblah"), values);
}

I hijack the context so that I can get a hold on the image from the getAppIcon() call (You extend this class which is an abstract class extending BroadcastReceiver)

i.e.

@Override
protected Bitmap getAppIcon() {
    Log.v(TAG, "putting icon");
    return BitmapFactory.decodeResource(this.context.getResources(), R.drawable.icon);
}

But my understanding of the context is limited and I think this is what is causing it to be stored incorrectly.

I've also tried getting the bitmap from the resources when onRecieve() is called and that doesn't work either.

I'm at a loss, any assistance would be appreciated.

A: 

I'm simply an idiot. Nothing is wrong with storing the image in this fashion (provided it is a .png), I simply forgot to setContentView().

Sorry!

accordionfolder