出现这个错误是因为在Android Oreo(API级别26)及更高版本中,应用程序需要显式请求权限来访问其他应用程序的ContentProvider。下面是解决该问题的代码示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String providerAuthority = "content://provider_authority"; // 替换为实际的ContentProvider的authority
int userId = 0; // 替换为实际的用户ID
Uri uri = ContentProvider.maybeAddUserId(Uri.parse(providerAuthority), userId);
context.grantUriPermission("com.android.providers.contacts", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
请注意,替换providerAuthority为实际的ContentProvider的authority,并将userId替换为实际的用户ID。
这样,您的应用程序应该能够在Android Oreo及更高版本上访问其他应用程序的ContentProvider了。