Sta*_*Rat 8 android android-contentresolver android-contentprovider
更新:我必须彻底改变我的问题,因为我发现了更多与我的问题相关的细节。
问题:我的解决 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
Run Code Online (Sandbox Code Playgroud)
如果我使用 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>
Run Code Online (Sandbox Code Playgroud)
客户端应用程序中的 AndroidManifest.xml :
<manifest>
...
<uses-permission android:name="MyProvider._READ_PERMISSION" />
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
如果我尝试在同一个应用程序中解析 Content Provider,它会起作用。
如果我packageManager.getInstalledPackages(PackageManager.GET_PROVIDERS)在我的客户端代码中使用来获取现有提供者的列表,那么对于 API [26,29] 我可以在列表中看到我的提供者。如果我在 API 30 中运行此代码,我的提供者不在列表中。
API 30 中与 ContentProvider 注册相关的内容似乎有所更改。但是我找不到什么。
Sta*_*Rat 12
我的自定义 ContentProvider 在带有 API 30 的模拟器上不起作用的原因是Android 11+ 中的包可见性
为了解决我的问题,我在<queries>客户端的 AndroidManifest.xml 中添加了以下元素:
<manifest>
...
<queries>
<package android:name="com.a52.datafeeder01" />
</queries>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
其中com.a52.datafeeder01是定义自定义 ContentProvider 的包名称。
小智 7
请在清单中添加以下权限
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission"/>
Run Code Online (Sandbox Code Playgroud)
这解决了我在 android 11 中的问题
小智 6
如果遇到我的问题,只需添加:
<manifest>
...
<queries>
<provider android:authorities="com.example.appcontainprovider" />
</queries>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
其中authoritiesvalue 是提供者权限。
参考:https : //developer.android.com/training/basics/intents/package-visibility#provider-authority
| 归档时间: |
|
| 查看次数: |
2064 次 |
| 最近记录: |