一个数据库上的几个Android内容提供商

时间:2012-09-17 05:48:37

标签: android database sqlite android-contentprovider

一般情况下,只有一个数据库可以有多个内容提供商吗?

我有以下情况/愿望:

  1. 我有一个带有数据库的应用程序,用于存储“主数据”(例如项目定义和首选项)和“实时数据”(例如此项目的工作时间)。

  2. 我有内部内容提供程序来读写数据。

  3. 现在我想要另外两个内容提供商供外部使用。

    1. 一个用于访问“主数据”(必须具有读写特殊权限)

    2. 一个用于访问“实时数据”(必须具有读写特殊权限,但与第一个不同)。

    3. 有可能吗?怎么样?

      我尝试实现不同的提供程序,但我得到了很多“引起:java.lang.IllegalStateException:database /data/data/package/databases/db.db(conn#0)已经关闭”。< / p>

      我只使用内容提供程序进行数据库访问。用于单行的数据列表(Spinner,ListViews)和直接内容提供者访问的加载器。

      修改

      此解决方案有效(FAKE_PERMISSION)!

      <provider android:name=".provider.MyContentProvider"
          android:authorities="my.package.provider"
          android:enabled="true"
          android:exported="true"
          android:permission="FAKE_PERMISSION" >
          <path-permission
              android:pathPrefix="/master_data"
              android:readPermission="my.package.PERMISSION_READ_MASTER_DATA"
              android:writePermission="my.package.PERMISSION_WRITE_MASTER_DATA" />
          <path-permission
              android:pathPrefix="/live_data"
              android:readPermission="my.package.PERMISSION_READ_LIVE_DATA"
              android:writePermission="my.package.PERMISSION_WRITE_LIVE_DATA" />
      </provider>
      

      没有全局提供商权限不起作用!无需uses-permission即可从外部应用访问这两个路径。

      <provider android:name=".provider.MyContentProvider"
          android:authorities="my.package.provider"
          android:enabled="true"
          android:exported="true" >
          <path-permission
              android:pathPrefix="/master_data"
              android:readPermission="my.package.PERMISSION_READ_MASTER_DATA"
              android:writePermission="my.package.PERMISSION_WRITE_MASTER_DATA" />
          <path-permission
              android:pathPrefix="/live_data"
              android:readPermission="my.package.PERMISSION_READ_LIVE_DATA"
              android:writePermission="my.package.PERMISSION_WRITE_LIVE_DATA" />
      </provider>
      

0 个答案:

没有答案