Android多内容提供商,(DLC)

时间:2012-10-31 09:00:31

标签: android android-manifest android-contentprovider

我希望将其他内容作为额外数据库添加到我的应用中。 我应该将它们放在apks和内容提供商中,这样它们可以直接从谷歌播放更新,或者直接下载到应用程序中的新数据库文件。

我对content-provider / apk方法的问题是,它们都必须在android清单中声明,我可能有多个数据库甚至数百个,所以在我的清单中需要100个内容提供者声明,即使用户可能只有几个甚至没有。

除非有办法我可以动态生成清单?或者在清单之外加载内容提供商?

由于

2 个答案:

答案 0 :(得分:5)

我认为最简洁的方法是为所有数据库文件提供一个唯一 ContentProvider

您应该围绕数据库选择构建URI

例如:content://com.your.package/a_db_file/something/things/5

然后在实现ContentProvider时,解析Uri以获取a_db_file段,打开相应的db文件,然后根据其余段执行所需的工作。

也许你需要像getCorrectDb(String a_db_file)这样的方法。 在此方法中,您应该正确调用与所需db文件匹配的sqlLiteOpenHelper

另请查看UriMatcher,它可能对您有用。 :)

最后你应该有:

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

    // TODO : Parse uri to get a_db_file string.

    SQLiteDatabase database = getCorrectDb(a_db_file);

    // TODO : get cursor from db according to other segments of uri.

    return cursor.

}

答案 1 :(得分:1)

我使用一个内容提供程序来保持简单并使用“attach database”sql命令。