Thanks - my implementation looks correct, so no idea why it's not being called. Tried tracing the call to getContentResolver().openFileDescriptor() and it seemed to be invoking openAssetFileDescriptor(), so intercepted openAssetFile() in my content provider, but it too isn't being called.
On Apr 25, 10:36 pm, Dianne Hackborn <[email protected]> wrote: > I don't know if it will help, but here is the source to the media provider > which implements openFile: > > http://android.git.kernel.org/?p=platform/packages/providers/MediaPro... > > This allows for example sharing of pictures in Gallery to work. > > > > On Tue, Apr 26, 2011 at 2:04 AM, Paul <[email protected]> wrote: > > On Apr 25, 8:55 pm, Dianne Hackborn <[email protected]> wrote: > > > On Tue, Apr 26, 2011 at 12:46 AM, Paul <[email protected]> wrote: > > > > > > share.setType(getString(R.string.note_default_mime_png)); > > > > > There is no reason for this string to come from a resource; it is not > > > > > something that gets localized, it is just a constant. > > > > I am storing it in the XML as a way of storing the value... any other > > > > standard conventions that are recommended? Store this as a static > > > > constant in a static 'settings' class maybe? > > > > Just a static constant is fine. For example: > >http://developer.android.com/reference/android/provider/MediaStore.Au... > > > Ok, thanks > > > > > > ACTION_SEND is not specified to return anything, so if you are > > getting > > > > any > > > > > result at all you can't count on what you get back being useful. > > > > I'm not counting on it returning anything useful, just having the > > > > functionality indicate that it has finished is enough, I am then > > > > setting a boolean field to true when it does, so that I know I that > > > > the app has created a temporary copy of the file in the app's cache > > > > directory. On exiting the program, if the field is true, I then empty > > > > the cache directory. Obviously don't need to do this if I am no > > > > longer copying the file if/when I get the method you suggest using > > > > onFile() to work. > > > > This may not be a safe assumption. For example the send will often take > > a > > > while, so an implementation may very likely exit once the send has been > > > confirmed and execute the operation in a background service. > > > Well if I can get the openFile override working, I won't need to use > > the cache directory and won't need this at all, so this shouldn't be > > an issue moving forward. > > > > > On that front, I have overriden the onFile() method in my content > > > > provider, but it is not being triggered by the above code, any > > > > suggestions? > > > > @Override > > > > public ParcelFileDescriptor openFile(Uri uri, String mode) { > > > > Log.d(LOG_TAG, "openFile() called"); > > > > return null; > > > > } > > > > Have you published the content provider in your manifest and ensured you > > > have set the authority correctly there in and the Intent's URI? Have you > > > tried opening it yourself to see if it works? Is anything interested > > > printed in the log? > > > The content provider is published in my manifest: > > > <provider > > android:name=".provider.MyProvider" > > android:authorities="package.name.here" > > android:exported="true" /> > > > I am using it for all DB activity in my app, so it's working... and > > have tried the following, and no errors are generated: > > > getContentResolver().openFileDescriptor(Uri.fromFile(shareFile), "r"); > > > But... this does not trigger a call to openFile(). > > > As I've switched over to passing the SEND the path directly to my file > > in the app's file directory, versus the path to the one I was copying > > to my cache directoy, the Uri for this is now: > > > /data/data/package.name/files/1.png > > > I get a permissions error now (as expected), but again, no call to > > openFile(). > > > > -- > > > Dianne Hackborn > > > Android framework engineer > > > [email protected] > > > > Note: please don't send private questions to me, as I don't have time to > > > provide private support, and so won't reply to such e-mails. All such > > > questions should be posted on public forums, where I and others can see > > and > > > answer them. > > > -- > > 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 > > -- > Dianne Hackborn > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. -- 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

