The attachment is not readable by other apps because you are saving it to getFilesDir().
Simply change getFilesDir() to Environment.getExternalStorageDir() and other apps will be able to handle the saved image. This also requires you to add the following permission in your AndroidManifest:
xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
I don't know why the image is black, I would have to see the resources. Best of luck.