I got it!
This is my solution for ContentObserver for each row, this can be applied on API 15 (15 doesn't have OnChange with URI param like on API 16 ). Of course you need a new ContentObserver for each row.
the mistake was at this line
Uri downloadsContentUri = Uri.parse("content://downloads/my_downloads/downloads/" + appDownloadId);
it should be without the "/downloads/", like this:
Uri downloadsContentUri = Uri.parse("content://downloads/my_downloads/" + appDownloadId);
and this is my ContentObserver:
public class DownloadsObserver extends ContentObserver
{
private long mAppDownloadId = 0;
public DownloadsObserver(Handler handler)
{
super(handler);
}
public DownloadsObserver(long appDownloadId, Handler handler)
{
super(handler);
mAppDownloadId = appDownloadId;
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
// Do some work on this row with the id
}
}