我有一个Android应用程序,可在下载目录中生成PNG文件:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
它最多生成3张PNG图像。所有这些图像实际上都是在提到的文件夹中生成的;我可以打开它们,看到其内容;很好。
第一个(GENERAL_DESCRIPTION_TABLE = "table_1.png"
)装有以下代码:
Uri uri = Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + File.separator + GENERAL_DESCRIPTION_TABLE);
bitmap = BitmapFactory.decodeFile(uri.getPath());
bitmap = Etc.resize(bitmap, 500, 500);
canvas.drawBitmap(bitmap, 50, 180, paint);
它已正确加载。
但是当我尝试打开第二个(MEASUREMENT_REPORT_2KHZ = "table_2.png"
)时:
uri = Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + File.separator + MEASUREMENT_REPORT_2KHZ);
bitmap = BitmapFactory.decodeFile(uri.getPath());
bitmap = Etc.resize(bitmap, 500, 500);
canvas.drawBitmap(bitmap, 50, 590, paint);
它抛出此异常:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
因为Etc.resize
方法接收到空引用。
此消息也会出现:
java.io.FileNotFoundException: /storage/emulated/0/Download/table_2.png: open failed: ENOENT (No such file or directory)
文件 table_2.png 位于下载目录中。
我具有以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
欢迎提出意见和建议。