2017-01-19 13 views
3

Мое приложение должно сохранить piechart в качестве png на external storage. Однако появляется эта ошибка:Ошибка файла не найдена без видимой причины?

java.io.FileNotFoundException: /storage/emulated/0/SAVE IMAGE EXAMPLE/myimage.png (No such file or directory) 

Я следовал инструкциям, чтобы добавить такую ​​функциональность очень тесно (от этого tutorial), но все же появляется ошибка. Приложение имеет разрешение на запись во внешнее хранилище, я добавил разрешение в свой файл android_manifest.xml.

Можете ли вы, ребята, заметить ошибку? Потому что не могу.

Если вы также не можете найти ошибку, можете ли вы порекомендовать любой другой способ сделать это?

Im using MPAndroidChart, но я действительно не думаю, что это связано с этим, потому что я мог бы попытаться сохранить любой другой объект, и ошибка остается.

код является

final PieChart piechart = (PieChart) findViewById(R.id.piechart); 

button2.setOnClickListener(new View.OnClickListener() { 
    public void onClick (View v) { 
    Toast.makeText(Main.this, "Chart Saved", Toast.LENGTH_SHORT).show(); 
    piechart.setCenterText("Test"); 
    Bitmap bitmap; 
    OutputStream output; 

    bitmap = BitmapFactory.decodeResource(getResources(),R.id.piechart); 

    File filepath = Environment.getExternalStorageDirectory(); 

    File dir = new File(filepath.getAbsolutePath()+"/SAVE IMAGE EXAMPLE"); 
    dir.mkdirs(); 

    File file = new File(dir, "myimage.png"); 

    try { 
     output = new FileOutputStream(file); 

     bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); 
     output.flush(); 
     output.close(); 


    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 
}); 

ПОЛНЫЙ ОШИБКА

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/SAVE IMAGE EXAMPLE/myimage.png (No such file or directory) 
W/System.err:  at java.io.FileOutputStream.open(Native Method) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:169) 
W/System.err:  at com.pies.quickpie.Main$1$3.onClick(Main.java:175) 
W/System.err:  at android.view.View.performClick(View.java:5637) 
W/System.err:  at android.view.View$PerformClick.run(View.java:22429) 
W/System.err:  at android.os.Handler.handleCallback(Handler.java:751) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
W/System.err:  at android.os.Looper.loop(Looper.java:154) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:6119) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

Проверьте, если у вас есть точный случай пути и правильного имя, Android, основываясь на Linux, имеет чувствительна к регистру файловой системы. – john16384

+0

У вас есть права доступа к хранилищу. Для внешнего хранилища может потребоваться разрешение. – Dawnkeeper

+0

У меня есть @dawnkeeper, добавлено разрешение в моем android_manifest.xml – niklasdude

ответ