I'm trying to fetch data from the content provider of application A.
The content provider is defined as follows in application A
<provider
android:name=".db.BDataProvider"
android:authorities="com.example.test.db.provider"
android:exported="true"
android:multiprocess="true"
android:readPermission="android.permission.permRead" />
Now in application B i'm trying to read the data as follows
new Thread(new Runnable() {
@Override
public void run() {
try {
try {
String URL = "content://com.example.test.db.provider/user";
Uri uriObj = Uri.parse(URL);
String[] projection = {""};
String[] selectionArgs = {""};
ContentResolver contentResolver = getContentResolver();
Cursor c = contentResolver.query(uriObj , projection, null, selectionArgs, "name");
if (c.moveToFirst()) {
String str = c.getString(c.getColumnIndex("_id"));
Log.d("", str);
}
} catch (Exception ex) {
ex.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}).start();
In the manifest of application B I've added
<uses-permission android:name="android.permission.permRead" />
I get the following error at this line
Cursor c = contentResolver.query(uriObj , projection, null, selectionArgs, "name");
java.lang.IllegalArgumentException: Cannot provide null context for the database.
2020-05-07 23:50:14.030 4294-4402/com.example.test D/ActivityThread: Loading provider com.example.test.db.provider: com.example.test.db.provider.BDataProvider
2020-05-07 23:51:36.017 4294-4402/com.example.test W/System.err: java.lang.IllegalArgumentException: Cannot provide null context for the database.
2020-05-07 23:51:36.019 4294-4402/com.example.test W/System.err: at android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:600)
2020-05-07 23:51:36.019 4294-4402/com.example.test W/System.err: at com.example.test.db.BDatabase.getInstance(BDatabase.java:15)
2020-05-07 23:51:36.020 4294-4402/com.example.test W/System.err: at com.example.test.db.BDataProvider.query(BDataProvider.java:42)
2020-05-07 23:51:36.021 4294-4402/com.example.test W/System.err: at android.content.ContentProvider.query(ContentProvider.java:1057)
2020-05-07 23:51:36.021 4294-4402/com.example.test W/System.err: at android.content.ContentProvider.query(ContentProvider.java:1149)
2020-05-07 23:51:36.022 4294-4402/com.example.test W/System.err: at android.content.ContentProvider$Transport.query(ContentProvider.java:241)
2020-05-07 23:51:36.023 4294-4402/com.example.test W/System.err: at android.content.ContentResolver.query(ContentResolver.java:757)
2020-05-07 23:51:36.024 4294-4402/com.example.test W/System.err: at android.content.ContentResolver.query(ContentResolver.java:706)
2020-05-07 23:51:36.025 4294-4402/com.example.test W/System.err: at android.content.ContentResolver.query(ContentResolver.java:664)
2020-05-07 23:51:36.025 4294-4402/com.example.test W/System.err: at com.example.test.ui.MainActivity$2.run(MainActivity.java:313)
2020-05-07 23:51:36.027 4294-4402/com.example.test W/System.err: at java.lang.Thread.run(Thread.java:764)
Now comes the weird part, the above code works in the project which is appcompatv7 based but gives be the above error in the new project created with androidX dependencies.