I have a custom ContentProvider I use to store fixes obtained from the GPS into a SQLite database. This class overrides ContentProvider methods (delete, insert, query…), but notice I have also included a method to query the last fix.
public class FixesContentProvider extends ContentProvider {
@Override
public int delete(...) { ... }
...
@Override
public Cursor query(...) { ... }
public Cursor getLastFix(Uri uri) { ... }
}
It is pretty easy to query data from other services or activities by calling getContentResolver().
ContentResolver cR = getContentResolver();
Cursor fixes = cR.query(CONTENT_URI, ...);
But I am not able to call my custom method (FixesContentProvider#getLastFix). How could I call custom methods defined in a ContentProvider?
Maybe I don’t understand how ContentProviders/ContentResolvers work in this case, but official Android documentation provided by Google is not very clear in this sense.
That’s completely true. In this very case though, you can take advantage of one fact: both
queryandgetLastFixmethods return aCursorobject. So, what I do would be adding some value to the URI that you pass toqueryand, then decide what you want to actually do:queryorgetLastFix. For instance:In fact, the
querymethod is suppose to return a result, given aUri. So, if you need to retrieve the last fix, you have to specify in the URI that you want the last fix.