我的應用程序應該在external storage
上保存一個piechart
作爲png。但是出現這樣的錯誤:沒有明顯的原因找不到文件錯誤?
java.io.FileNotFoundException: /storage/emulated/0/SAVE IMAGE EXAMPLE/myimage.png (No such file or directory)
我跟着指示添加這種功能非常密切(從這個tutorial),但還沒有出現錯誤。該應用程序有權寫入外部存儲,我在我的android_manifest.xml中添加了權限。
你們可以發現錯誤嗎?因爲我不可以。
如果你還找不到錯誤,你能推薦任何其他方式來做到這一點?
即時通訊使用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)
檢查,如果你有路徑和名稱是否正確的確切情況下,Android的,是基於Linux上,有一個區分大小寫的文件系統。 – john16384
您是否有存儲權限?外部存儲可能需要許可。 – Dawnkeeper
我有@dawnkeeper,在我的android_manifest.xml中添加了權限 – niklasdude