【问题标题】:Content Provider permission when accessing via android.widget.RemoteViewsService通过 android.widget.RemoteViewsService 访问时的 Content Provider 权限
【发布时间】:2011-08-28 20:31:53
【问题描述】:

我正在开发一个应用程序的小部件,作为更大应用程序的一部分。 该应用程序包含一个 ContentProvider,它在 manifest.xml 中声明如下:

<provider android:name="aaa.bbb.providers.MyContentProvider"
    android:authorities="aaa.bbb.myprovider"
    android:enabled="true" 
    android:exported="false">
</provider>

如您所见,内容提供程序的导出属性设置为 false,因为我不希望 其他应用程序来访问它(根据谷歌的开发人员指南..)。 问题是这个属性会导致小部件在尝试获取数据时崩溃 来自内容提供者,尽管它从相同的进程运行(小部件使用使用 android.widget.RemoteViewsService 的 StackView)我得到:

java.lang.SecurityException: Permission Denial: reading aaa.bbb.providers.MyContentProvider uri content://aaa.bbb.myprovider/users from pid=203, uid=10022 requires null

现在据我所知,当缺少权限时会发生这种错误,但它说 那个权限null是必须的,没有我们都知道的那个权限……

谢谢!

【问题讨论】:

    标签: android android-widget android-manifest android-contentprovider


    【解决方案1】:

    【讨论】:

    • 我阅读了它,但没有找到任何可以帮助我的东西。我的问题不涉及活动,而只涉及小部件和内容提供者。
    • 好的,我想我知道问题出在哪里,但我没有解决办法。在我的RemoteViewsService 中有一个RemoteViewsFactory 类,我将覆盖onDataSetChanged() 方法并对内容提供者执行查询。出于某种原因,只有在通过onDataSetChanged() 方法查询内容提供者时,才会出现异常(我再次检查了该方法运行的进程是什么,与内容提供者的进程相同)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多