我有一个使用 ActiveAndroid 的应用程序,它运行良好。然而;现在,当我尝试将模型保存到数据库时,我收到 SecurityException。
堆栈是:
Error saving model java.lang.SecurityException: Failed to find provider null for user 0; expected to find a valid ContentProvider for this authority
at android.os.Parcel.readException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1888)
at android.content.IContentService$Stub$Proxy.notifyChange(IContentService.java:801)
at android.content.ContentResolver.notifyChange(ContentResolver.java:2046)
at android.content.ContentResolver.notifyChange(ContentResolver.java:1997)
at android.content.ContentResolver.notifyChange(ContentResolver.java:1967)
at com.activeandroid.Model.save(Model.java:162)
[.... local stack removed]
还有其他人经历过吗?我们需要指定内容提供商 in the AndroidManifest.xml?
抱歉,我还没有一个孤立的例子。我会努力把一些东西放在一起。
提前致谢
正如 @GeigerGeek 所指出的,Android 26 及更高版本上的安全更改要求您在清单中指定内容提供商。
对于 ActiveAndroid,您可以将以下内容添加到清单中并更改包名称。
<provider
android:name="com.activeandroid.content.ContentProvider"
android:authorities="<your.package.name>"
android:enabled="true"
android:exported="false">
</provider>
如果在构建过程中使用风味,您可以使用以下内容:
android:authorities="${applicationId}"
Using ${applicationId}
将有助于基于风味的项目结构,其中每种风味的应用程序包可能不同。
欲了解更多解决方案或信息,已采取从这里。 https://github.com/pardom/ActiveAndroid/issues/536
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)