Android 未能在API 30中找到内容提供程序

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

更新:我必须完全更改我的问题,因为我发现了与我的问题相关的更多细节

问题是:我的解决内容提供商的应用程序在带有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、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语句/代码。