Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to store files in content providers

I have a requirement to attach a Zip file to a message in the Android email composer.

The Zip file is being created by my application and stored in the app's private storage area (accessible via getFilesDirectory()). I am obtaining the URI to this Zip file and appending it to an email intent object; when I launch the email activity I am able see the attachment but my email recipient is not receiving the files,

After doing some research on this, I found that my application data cannot be shared with other app's (in this case the Android Email app).

To solve this problem I would like to implement the recommend solution of using a content provider to share my application data.

First of all, I would like to confirm if this is possible, and if it is could anyone please give me some hints on how to go about doing this. I need to know how to copy my Zip file from the getFilesDirectory() of my application, to the content provider, and also how to attach the content provider URI to the email intent object.

I can't place my zip files into an SD card...

I just want only to store my files in to my device internal storage and attach to the email composer.

like image 431
brig Avatar asked Jun 30 '11 12:06

brig


1 Answers

By default, a ContentProvider can be accessed by any application on the device. If you are willing for these files to be accessed by any application on the device, create a ContentProvider, with real implementations for getType() and openFile(). Then, the content:// URL should work with the Email app, AFAIK.

Here is a sample project demonstrating a ContentProvider serving up files from local storage, in this case to a WebView.

like image 73
CommonsWare Avatar answered Sep 23 '22 06:09

CommonsWare