2010-12-16 103 views
0

J'ai un sélecteur d'image/Cropper avec le code provenant this siteoù/comment stocker une image privée dans mon application? (Android)

Ils créent l'image dans le stockage externe du téléphone, mais je veux le stocker dans la mémoire interne de mon application, un processus documenté here

Voici à quoi ressemble ma fonction de récupération du fichier temporaire. Toutefois, lorsque j'essaie d'utiliser le fichier renvoyé par cette fonction, l'image ne change pas. En fait, en regardant logcat, il semble que resolveUri a échoué sur un uri de bitmap incorrect sur le fichier que j'ai généré. L'erreur se produit lorsque j'essaie de définir l'URI de l'image, ce qui me porte à croire qu'il n'a pas été enregistré correctement. C'est étrange pour moi, vu que le code original du site crée juste un fichier dans la carte SD, et le code fonctionne bien pour la lecture/écriture à cela. Je me demande donc où le problème se pose.


@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
    case PHOTO_PICKED: 
     if (resultCode == RESULT_OK) { 
     if (data != null) { 
      Bundle extras = data.getExtras(); 
      if (extras != null) { 
      ImageView callerImage = (ImageView)findViewById(R.id.contact_image); 
      callerImage.setImageURI(Uri.fromFile(getTempFile())); 
      } 
     } 
     } 
     break; 
    } 
    } 

private File getTempFile() { 
    try { 
     FileOutputStream fos = openFileOutput(TEMP_PHOTO_FILE, Context.MODE_WORLD_WRITEABLE); 
     fos.close(); 
     File f = getFileStreamPath(TEMP_PHOTO_FILE); 
     return f; 
    } catch (FileNotFoundException e) { 
     // To be logged later 
     return null; 
    } catch (IOException e) { 
     // To be logged later 
     return null; 
    } 
} 
+0

Sur quoi est réglé TEMP_PHOTO_FILE? Selon les documents, il ne doit contenir aucun séparateur de chemin. – Squonk

+0

il est défini sur "tempPhoto.jpg", le même que le code source que j'ai lié. J'ai été en mesure de faire ce travail plus tôt en créant simplement un nouveau fichier dans le système de fichiers, au lieu d'utiliser openFileOutput, donc je dois penser que le problème est là quelque part – damonkashu

Répondre

0

Peu importe, je suis tellement stupide. Quand j'ai appelé getTempFile, chaque fois qu'il recrée le fichier, ce qui est une erreur. Il devrait seulement créer le fichier sur l'appel initial et l'ouvrir simplement le reste du temps.