just to recap, you're not supposed to write to folders outside your app's jail (file.dirinternal). if you insist on using the downloads or pictures folders, you need runtime permissions. but it looks like even that may soon no longer be possible.
without know what your app does, it's hard to speculate on what types of resource sharing you might need, but you could set your app up to receive resources from other apps or your app might share its resources with other apps. the mechanisms you've mentioned early on would come into play. an example might be a user takes a picture, and your app puts funny noses on pictures of people's face and then emails them to the user's friend. when you set your app up to put funny noses on images, it's listed as an app that can receive images from another app. the user chooses the "share" icon, and your app appears as a possible recipient of the image. she chooses your app. your app receives the image as a resource. you convert it to a bitmap and do your funny nose. you save your work and then offer to share it with an app that does email. the email app receives your resource and does its job. in theory, you could write an app that takes pictures, puts a funny nose on the image and then emails it. but 2 out of those 3 tasks have already been written, and - no offense - probably written better than you could write them. the whole system is set up to allow you to move resources from one app to another, with each app doing what it does best.