我创建了一个小内容提供程序(我只用它来查询db表并获取一些值)。我已经确认提供商工作正常。
表值通过正常的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);
}
答案 0 :(得分:3)
每当您手动更新基础数据库并需要通知已注册的ContentObserver
个实例时,请在notifyChange()
的{{1}}上致电ContentResolver
。
因此,举例来说,假设您已使用常量值Context
注册ContentObserver
:
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);
的所有已注册观察员都会收到通知。