Bonjour,
Je m'en remets à vous car j'ai un problème j'essaie de sauvegarder l'image contenue de l'ImageView nommé avatar dans la carte sd du téléphone.
Dans le but de pouvoir la récupérer l'image dans une autre activité.
Voici le code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
private void createImageFile() {
BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
Bitmap bitmap = draw.getBitmap();
try {
FileOutputStream outStream = null;
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/test");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);
outStream = new FileOutputStream(outFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} |
Le problème est que j'ai ce message d'erreur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)*
at android.view.View.performClickInternal(View.java:6574)*
at android.view.View.access$3100(View.java:778)*
at android.view.View$PerformClick.run(View.java:25885)*
at android.os.Handler.handleCallback(Handler.java:873)*
at android.os.Handler.dispatchMessage(Handler.java:99)*
at android.os.Looper.loop(Looper.java:193)*
at android.app.ActivityThread.main(ActivityThread.java:6669)*
at java.lang.reflect.Method.invoke(Native Method)*
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
Caused by: java.lang.ClassCastException: android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
at fr.centos.app1.MainActivity.createImageFile(MainActivity.java:197)
at fr.centos.app1.MainActivity.ajouterPersonne(MainActivity.java:167)
at java.lang.reflect.Method.invoke(Native Method)*
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)*
at android.view.View.performClick(View.java:6597)*
at android.view.View.performClickInternal(View.java:6574)*
at android.view.View.access$3100(View.java:778)*
at android.view.View$PerformClick.run(View.java:25885)*
at android.os.Handler.handleCallback(Handler.java:873)*
at android.os.Handler.dispatchMessage(Handler.java:99)*
at android.os.Looper.loop(Looper.java:193)*
at android.app.ActivityThread.main(ActivityThread.java:6669)*
at java.lang.reflect.Method.invoke(Native Method)*
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)* |
D'après Android Studio l'erreur vient de cette ligne :
BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
Si quelqu'un a une idée de comment régler le problème ou une autre solution pour récupérer l'image je suis preneur.
Merci.
Partager