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;
}
}
Sur quoi est réglé TEMP_PHOTO_FILE? Selon les documents, il ne doit contenir aucun séparateur de chemin. – Squonk
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