【问题标题】:Programmatically finding Chrome browser history以编程方式查找 Chrome 浏览器历史记录
【发布时间】:2013-10-07 18:12:19
【问题描述】:

我正在制作一个小型 Java 应用程序来显示用户访问次数最多的 Chrome 中的哪些 URL。如何在 Java 中访问我的浏览器历史记录?

【问题讨论】:

    标签: java javascript android


    【解决方案1】:

    创建一个ContentObserver 类...

    static class ChromeOberver extends ContentObserver {   
        public ChromeOberver(Handler handler) { 
            super(handler);          
        } 
    
        @Override
        public void onChange(boolean selfChange) { 
            onChange(selfChange, null); 
        }    
    
        @Override
        public void onChange(boolean selfChange, Uri uri) {
            super.onChange(selfChange);
            Log.d(TAG, "onChange: " + selfChange);
    
            Cursor cursor = context.getContentResolver()
                  .query(CHROME_BOOKMARKS_URI, new String() {"title", "url"}, 
                                               "bookmark = 0", null, null);
    
            // process cursor results
        }
    }
    

    并注册该类以监控历史记录/书签更改:

    private static String CHROME_BOOKMARKS_URI = 
           "content://com.android.chrome.browser/bookmarks";
    
    ChromeOberver observer = new ChromeOberver();
    resolver.registerContentObserver(CHROME_BOOKMARKS_URI, true, observer);
    

    别忘了权限:

    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
    

    【讨论】:

    • 缺少一件事:您需要查询 URL(只是在搜索一个好的示例;)
    • 请注意,这是未记录且不受支持的。
    • @CommonsWare:确实如此,虽然工作得很好:) 你有“官方”版本吗?
    • @Trinimon:我不知道有一个。
    • @Dilip:上面的代码肯定可以工作——但是,从 Android M 开始,它不再允许读取浏览器历史记录(将抛出 SecurityException;有关详细信息,请参阅 developer.android.com/intl/ko/about/versions/marshmallow/…)。你必须在这里找到另一个解决方案。在以前的平台上它应该仍然可以工作,但您可能必须使用 content://com.android.chrome.browser/history 来获取较新的 Chrome 版本。
    猜你喜欢
    • 2016-01-27
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2015-05-25
    • 1970-01-01
    • 2012-01-26
    • 2013-12-27
    相关资源
    最近更新 更多