2

我创建了一个小型内容提供程序(我只用它来查询数据库表并获取一些值)。我已经确认提供商工作正常。

表值通过正常的 sql 插入(而不是通过任何内容提供程序)定期更新

每当通过上述正常的 sqlite 操作发生插入/更新或删除时,我需要通知内容解析器,这些解析器是为了与内容提供者通信而编写的,只是为了查询数据库并获取一些值。

这可能吗?如果是,需要做什么?

任何帮助表示赞赏。

编辑以包括我的数据库插入方法:

public void insert(ArrayList<Integer> profileValues, String tableName){
    String duplicationCheck = " WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID = "+"'"+profileValues.get(0)+"'"+");";
    if(tableName.equals(PROFILES_TABLE)){
        profilesDB.execSQL("INSERT INTO " +
                PROFILES_TABLE +
                "(devID,alert,findme,proximity,timep,conn_status) SELECT "+"'"+profileValues.get(0)+"'"+","+profileValues.get(1)+","+profileValues.get(2)+","+profileValues.get(3)+","+profileValues.get(4)+","+profileValues.get(5)+duplicationCheck);
    }
    getContentResolver().notifyChange(MY_CONTENT_URI, null);

 }
4

1 回答 1

3

每当您手动更新底层数据库并需要通知已注册的ContentObserver实例时,请立即调用notifyChange().ContentResolverContext

因此,例如,假设您ContentObserver使用常量 value注册了 a MY_CONTENT_URI

//Insert, update, or delete data in the database

//If you are within a Context, like Activity or Service
getContentResolver().notifyChange(MY_CONTENT_URI, null);

//Otherwise pass in a Context you can call on
context.getContentResolver().notifyChange(MY_CONTENT_URI, null);

Uri将通知您通过的特定的所有注册观察员。

于 2012-09-24T21:42:47.003 回答