gpt4 book ai didi

android - 未能在 API 30 中找到内容提供者

转载 作者:行者123 更新时间:2023-12-03 15:48:08 27 4
gpt4 key购买 nike

更新:我必须完全改变我的问题,因为我发现了与我的问题相关的更多细节。
问题:我的解决 Content Provider 的应用程序无法在具有 API 30 的模拟器中运行。错误:

java.lang.SecurityException: Failed to find provider com.a52.datafeeder01.MyProvider for user 0; expected to find a valid ContentProvider for this authority
如果我使用 API 26、27、28 和 29,那么有 没问题 .
带有 ContentProvider 的应用程序中的 AndroidManifest.xml:
<manifest>
<permission
android:name="MyProvider._READ_PERMISSION"
android:protectionLevel="normal" />
<application>
<activity>
...
</activity>
<provider android:name=".MyProvider"
android:authorities="com.a52.datafeeder01.MyProvider"
android:enabled="true"
android:exported="true"
android:readPermission="MyProvider._READ_PERMISSION"/>
</application>
</manifest>
客户端应用程序中的 AndroidManifest.xml:
<manifest>
...
<uses-permission android:name="MyProvider._READ_PERMISSION" />
...
</manifest>
如果我尝试在同一个应用程序中解析 Content Provider,它可以工作。
如果我使用 packageManager.getInstalledPackages(PackageManager.GET_PROVIDERS)在我的客户端代码中获取现有提供者的列表,然后对于 API [26,29],我可以在列表中看到我的提供者。如果我在 API 30 中运行此代码,我的提供程序不在列表中。
与 ContentProvider 的注册相关的 API 30 中似乎发生了一些变化。但是我找不到什么。

最佳答案

我的自定义 ContentProvider 在具有 API 30 的模拟器上不起作用的原因是 Package visibility in Android 11+
修复 我在 <queries> 之后添加了我的问题元素到客户端的 AndroidManifest.xml 中:

<manifest>
...
<queries>
<package android:name="com.a52.datafeeder01" />
</queries>
...
</manifest>
在哪里 com.a52.datafeeder01是定义自定义 ContentProvider 的包名称。

关于android - 未能在 API 30 中找到内容提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63563995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com