Android 未能在API 30中找到内容提供程序
更新:我必须完全更改我的问题,因为我发现了与我的问题相关的更多细节 问题是:我的解决内容提供商的应用程序在带有API 30的Emulator中无法工作。错误:Android 未能在API 30中找到内容提供程序,android,android-contentprovider,android-contentresolver,Android,Android Contentprovider,Android Contentresolver,更新:我必须完全更改我的问题,因为我发现了与我的问题相关的更多细节 问题是:我的解决内容提供商的应用程序在带有API 30的Emulator中无法工作。错误: java.lang.SecurityException: Failed to find provider com.a52.datafeeder01.MyProvider for user 0; expected to find a valid ContentProvider for this authority 如果我使用API26、2
java.lang.SecurityException: Failed to find provider com.a52.datafeeder01.MyProvider for user 0; expected to find a valid ContentProvider for this authority
如果我使用API26、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>
...
...
如果我尝试在同一个应用程序中解析内容提供商,它会起作用
如果我在客户端代码中使用packageManager.getInstalledPackages(packageManager.GET_PROVIDERS)
来获取现有提供者列表,那么对于API[26,29],我可以在列表中看到我的提供者。如果我在API 30中运行此代码,则我的提供程序不在列表中
似乎API 30中与ContentProvider注册相关的内容发生了变化。但是我找不到什么。我的自定义ContentProvider无法在使用API 30的Emulator上工作的原因是 为了解决我的问题,我在客户端的AndroidManifest.xml中添加了以下
元素:
<manifest>
...
<queries>
<package android:name="com.a52.datafeeder01" />
</queries>
...
</manifest>
...
...
其中
com.a52.datafeeder01
是定义自定义ContentProvider的包名。我的自定义ContentProvider不能在使用API 30的Emulator上工作的原因是
为了解决我的问题,我在客户端的AndroidManifest.xml中添加了以下
元素:
<manifest>
...
<queries>
<package android:name="com.a52.datafeeder01" />
</queries>
...
</manifest>
...
...
其中
com.a52.datafeeder01
是定义自定义ContentProvider的包名。如果我有问题,只需添加:
<manifest>
...
<queries>
<provider android:authorities="com.example.appcontainprovider" />
</queries>
...
</manifest>
...
...
其中,权限
值是提供者权限
参考资料:如果我有问题,只需添加:
<manifest>
...
<queries>
<provider android:authorities="com.example.appcontainprovider" />
</queries>
...
</manifest>
...
...
其中,权限
值是提供者权限
引用:请从清单中显示完整的提供程序定义。@blackapps,我已使用最近的更改更新了提供程序定义是否缺少grand uri权限?@blackapps,我已尝试使用uri权限,没有任何区别。仍然可以在设备上正常工作,但在模拟器上无法正常工作。您没有显示导致该异常的app-2语句/代码。请从清单中显示完整的提供程序定义。@blackapps,我已使用最近的更改更新了提供程序定义是否缺少grand uri权限?@blackapps,我已尝试使用uri权限,没什么区别。在设备上仍然可以正常工作,在模拟器上则不行。您没有显示导致该异常的app-2语句/代码。