ContentObserver:uri permission issue while running in service

Application needs to know when new image arrives into the device and be able to read its metadata all the time. So a service will be running into the background which registers/unregisters the ContentObserver.

I am now stuck with uri permission dilemma. If my application was running in foreground (with activities) it would be easy to trigger asking permission window to the user, which is not possible in this case. I have contentObserver for "MediaStore.Images.Media.INTERNAL_CONTENT_URI". so i will get the notification in onChange method of ContentObserver class.

@Override
public void onChange(boolean selfChange, Uri uri) {

    final String[] projec = { MediaStore.MediaColumns.DATA };
    final Cursor cursor = context.getContentResolver().
            query(uri, proj, null, null, null);
}

This is where, I am getting dump

requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

One option I tried was to declare the uri permission in manifest file inside the tag. However, I couldn't find android's contentobserver class, which extends the content provider (and can be set as provider name in that tag).

SO has couple of questions and discussions in this issue (this error and permission) - however, none of them (that I could find) are related to this permission while running as service. I would appreciate if someone can share any idea how to deal with this issue.