I spoke too soon.
It works ONCE and then it
12-04 22:38:05.330: WARN/System.err(763):
java.io.FileNotFoundException: This file can not be opened as a file
descriptor; it is probably compressed
This is the routine in the Content Provider:
@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode) {
String fileName = "asset_text.txt";
AssetManager assetManager = this.getContext().getAssets();
AssetFileDescriptor afd = null ;
try {
afd = assetManager.openFd(fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return afd;
}
What I don't understand is why did it work once and no more? The file
is still there, intact. Does it get compressed on the device? How can
I read it reliably?
Thanks.
On Dec 4, 3:02 pm, Saied <[email protected]> wrote:
> wow. that was dumb of me!! Thanks for pointing it out.
>
> so I changed it to:
>
> @Override
> public AssetFileDescriptor openAssetFile(Uri uri, String mode) {
> String fileName = "asset_text_orig.txt"; // hardcoding
> the
> file name for now
>
> AssetManager assetManager = getAssets();
> AssetFileDescriptor afd = assetManager.openFd(fileName);
> return afd;
> }
>
> and it WORKS!!
>
> Thank you VERY much for your help and indulgence!
>
> On Dec 4, 2:09 pm, skink <[email protected]> wrote:
>
>
>
>
>
>
>
> > Saied wrote:
> > > Thanks again!
>
> > > Actually, this seems to be working on the ContentProvider now:
>
> > > public AssetFileDescriptor openAssetFile(Uri uri, String mode) {
> > > String fileName = "asset_text_orig.txt";
> > > URI uri1 = URI.create(fileName);
> > > AssetFileDescriptor parcel = this.openAssetFile(uri1, mode);
> > > //
> > > for testing purposes, I hardwired this to uri1 >
> > > "asset_text_orig.txt";
> > > return parcel;
> > > }
>
> > it will not work since you call openAssetFile recursively and you will
> > get stack overflow error
>
> > > Now, how do I read this from an app?
>
> > > String packageName = "com.example.text.cp";
> > > FileInputStream fstream = new FileInputStream("content://" +
> > > packageName); // there is only one kind of file exposed
> > > DataInputStream in = new DataInputStream(fstream);
> > > BufferedReader br = new BufferedReader(new InputStreamReader(in));
> > > String strLine = br.readLine();
>
> > > ...
>
> > > Or should I include openAssetFile(Uri uri, String mode) at the end of
> > > the uri goint to FileInputStream?
>
> > > Thank you very much for your help so far.
>
> > seehttp://developer.android.com/guide/topics/providers/content-providers...
>
> > pskink
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en