I have two apps that are using content provider. App-1 is a "provider App" that has a content provider to access into database. That app compiled on API LEVEL 30. And App-2 is a "consummer app" that want to access database via content provider. There is no problem when I build app-2 using android API LEVEL 29. But, when I try to use API LEVEL 30 on App-2, I got SecurityException: Failed to find provider com.package.name.provider for user 0; expected to find a valid ContentProvider for this authority; on API LEVEL 30
Exception.
here the logcat:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.satelliteapp, PID: 10599
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.satelliteapp/com.example.satelliteapp.FavActivity}: java.lang.SecurityException: Failed to find provider com.package.name.provider for user 0; expected to find a valid ContentProvider for this authority
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.SecurityException: Failed to find provider com.package.name.provider for user 0; expected to find a valid ContentProvider for this authority
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.content.IContentService$Stub$Proxy.registerContentObserver(IContentService.java:1229)
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:2627)
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:2615)
at com.example.satelliteapp.FavActivity.onCreate(FavActivity.kt:55)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.content.ContentService.registerContentObserver(ContentService.java:355)
at android.content.IContentService$Stub.onTransact(IContentService.java:482)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
this is the App-1 manifest:
<permission android:name="com.package.name.provider.READ_DATABASE" android:protectionLevel="normal" />
<permission android:name="com.package.name.provider.WRITE_DATABASE" android:protectionLevel="normal" />
<provider android:name=".provider.UserProvider"
android:authorities="com.package.name.provider"
android:exported="true"
android:enabled="true"
android:grantUriPermissions="true"
android:readPermission="com.package.name.provider.READ_DATABASE"
android:writePermission="com.package.name.provider.WRITE_DATABASE" />
and here is the app-2 manifest:
<uses-permission android:name="com.package.name.provider.READ_DATABASE"/>
<uses-permission android:name="com.package.name.provider.WRITE_DATABASE"/>
how to solve this issue?