我有一个应用程序,当 a 通知 aContentObserver
的更改时ContentProvider
,它会尝试在后台线程上查询提供程序。这会导致 anSecurityException
被抛出:
8-10 15:54:29.577 3057-3200/com.xxxx.mobile.android.xxx W/Binder:从活页夹存根实现中捕获了一个 RuntimeException。 java.lang.SecurityException: Permission Denial: 读取 com.xxx.mobile.android.mdk.model.customer.ContentProvider uri content://com.xxx.mobile.android.consumer.xxx/vehicle from pid=0, uid= 1000 需要导出提供程序,或 grantUriPermission() 在 android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:539) 在 android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:452) 在 android.content.ContentProvider$Transport.query(ContentProvider.java:205) 在 android.content.ContentResolver.query(ContentResolver.java:478) 在 android.content.ContentResolver.query(ContentResolver.java:422)
应用程序创建的线程如何以与应用程序的 ContentProvider 不同的 UID 结束?
通过在其中放置一个异常断点,android.content.ContentProvider
我看到了UserHandle.isSameApp(uid, mMyUid)
isfalse
和UserHandle.isSameUser(uid, mMyUid)
is true
。我还看到提供者 UID 是 10087。