Android onChange 事件未在 contentObserver 中触发,用于 android 5 (Lollipop) 上的 chrome 历史记录

Posted

技术标签:

【中文标题】Android onChange 事件未在 contentObserver 中触发,用于 android 5 (Lollipop) 上的 chrome 历史记录【英文标题】:Android onChange event not triggered in contentObserver for chrome history on android 5 (Lollipop) 【发布时间】:2015-01-18 13:49:00 【问题描述】:

我注意到我的 chrome 历史记录和书签的 contentObservers 不再在 android lolipop 上触发。该代码在旧版本的 android 上完美运行(无论 chrome 版本如何),但在 Lollipop 上它不再工作了。

我已经提交了关于铬的错误,这已被 cmets 中的其他人证实。 https://code.google.com/p/chromium/issues/detail?q=obogzch%40gmail.com&colspec=ID%20Pri%20M%20Iteration%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified&id=435541&thanks=435541&ts=1416575883

有人找到解决办法了吗?

乐: 感谢 Fuong Lee 的解决方法,在添加内容观察者后调用此方法以启动它:

private boolean checkContentProvider(Uri uri) //uri = content://com.android.chrome.browser/history

   
        Cursor mCur = getContentResolver().query(uri, null, null, null, null);
        return (mCur.getCount() > 0);
   

【问题讨论】:

【参考方案1】:

当我将 chrome 书签的新 URI 从“content://com.android.chrome.browser/bookmarks”更改为新 URI“content://com.android.chrome.browser/history”时,同样的问题“在 Lolipop 版本上未触发 onChange 事件”。而且,我在观察者注册后尝试查询数据进行检查……它像魔术一样运行。我不知道为什么它运行正常,希望对您有所帮助。

【讨论】:

我可以确认这一点。感谢您的回答!添加观察者后调用此方法并触发:private boolean checkContentProvider(Uri uri) // String[] proj = new String[] Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL ; Cursor mCur = getContentResolver().query(uri, null, null, null, null); return (mCur.getCount() > 0);

以上是关于Android onChange 事件未在 contentObserver 中触发,用于 android 5 (Lollipop) 上的 chrome 历史记录的主要内容,如果未能解决你的问题,请参考以下文章

输入类型 = 范围上的 onchange 事件在拖动时未在 Firefox 中触发

React 测试库未在快照中显示输入 onChange 道具

InAppBrowser 事件未在 Cordova 3.0.0 / Android 中触发

keyPress事件未在Android手机中触发

Xamarin.Android EditText事件未在设备上触发

React JS 视图未在 setState() 上重新渲染