2010-08-17 3 views
0

Je travaille sur une application qui, lors de l'instillation de certaines applications leur enverra un message pour s'enregistrer auprès d'un fournisseur de contenu. Tout fonctionne bien, les chaînes sont stockées, mais je ne peux pas obtenir le byte [] blob (un fichier bitmap .png) pour convertir correctement depuis onRecieve() dans le broadcastreciever.Stockage d'un bitmap dans un ContentProvider d'un 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); 
} 

Je détourner le contexte pour que je puisse avoir une emprise sur l'image de la getAppIcon() appel (vous étendez cette classe, qui est une classe abstraite extension BroadcastReceiver)

-à-dire

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

Mais ma compréhension du contexte est limitée et je pense que c'est ce qui provoque son stockage incorrect.

J'ai également essayé d'obtenir le bitmap à partir des ressources lorsque onRecieve() est appelé et cela ne fonctionne pas non plus.

Je suis à perte, toute aide serait appréciée.

Répondre

0

Je suis simplement un idiot. Il n'y a rien de mal à stocker l'image de cette façon (à condition qu'il s'agisse d'un fichier .png), j'ai simplement oublié setContentView().

Désolé!

Questions connexes