簡體   English   中英

在設備上進行測試時,為什么看不到以編程方式創建的書簽

[英]Why can't I see the bookmarks I have created programmaticaly when testing on my device

我有一個可以顯示所有書簽的應用程序。 我可以列出書簽,然后我的按鈕添加書簽。 我尚未實現用於立即更新列表的代碼,但是當我返回新書簽時,列表中將顯示新書簽。 這是我要添加的默認書簽,並添加了這些字段

 map.put(Browser.BookmarkColumns.CREATED, creationTime);
                map.put(Browser.BookmarkColumns.TITLE, addTitle);
                map.put(Browser.BookmarkColumns.BOOKMARK, 1);
                cr.update(Browser.BOOKMARKS_URI, map,"_id = " + cur.getInt(0), null);

新書簽將顯示在列表中,但是當我打開瀏覽器並查看“書簽”選項卡時,將顯示所有其他書簽,但沒有創建的所有書簽。

我已經在版本7和版本10的模擬器上對此進行了測試,並且可以正常工作,但是當我在運行於版本2.3.3的三星銀河s2上進行嘗試時,它將添加到列表中。 我已在設備上單步執行並創建了書簽,我知道這一點,因為我的代碼設置為在找不到時添加,或者在找到時重寫。

我安裝了多個瀏覽器,並且在設備上安裝了Firefox和Opera。 Firefox保留了自己的書簽,但我還沒有使用過歌劇

這是所有添加書簽的代碼

private void addBookmark(String addTitle, String addUrl)    {
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(BOOKMARKS_URI, projection,     android.provider.Browser.BookmarkColumns.BOOKMARK, null, null);
    //first find out if this title has been used before
    boolean found = false;
    long creationTime = new Date().getTime();
    if (cur.moveToFirst()) {
        String title;           
        int count = 0;
        int titleColumn;

        do {                 
            titleColumn = cur.getColumnIndex(BookmarkColumns.TITLE);
            title = cur.getString(titleColumn);
            if (title.equals(addTitle)) 
            {
                found = true;
                ContentValues map = new ContentValues();
                map.put(Browser.BookmarkColumns.CREATED, creationTime);
                map.put(Browser.BookmarkColumns.TITLE, addTitle);
                map.put(Browser.BookmarkColumns.BOOKMARK, 1);
                map.put(Browser.BookmarkColumns.DATE, 0);
                map.put(Browser.BookmarkColumns.VISITS, 0);
                cr.update(Browser.BOOKMARKS_URI, map,"_id = " + cur.getInt(0), null);
                Log.d(LOGTAG,"title found: "+ Integer.toString(count));
            }
            count++;   
        }while (cur.moveToNext());
    }else {
        Log.d(LOGTAG,"didn't move to first");
    }

    if (!found) {

            cur = cr.query(BOOKMARKS_URI,
                    projection, 
                    android.provider.Browser.BookmarkColumns.BOOKMARK, 
                    null, 
                    null);
            // Adding a bookmark for a site the user has not been to.
            ContentValues map = new ContentValues();
            map.put(Browser.BookmarkColumns.TITLE, addTitle);
            map.put(Browser.BookmarkColumns.URL, addUrl);
            map.put(Browser.BookmarkColumns.CREATED, creationTime);
            map.put(Browser.BookmarkColumns.BOOKMARK, 1);
            map.put(Browser.BookmarkColumns.DATE, 0);
            map.put(Browser.BookmarkColumns.VISITS, 0);
            cr.insert(Browser.BOOKMARKS_URI, map);
    }
}

這是我嘗試將訪問量值設置為100的最后一個代碼,現在將其顯示為歷史記錄項,但用星號將其顯示為收藏項。 這對我來說,我將這些值之一設置為錯誤或丟失了一個。 歷史記錄選項卡知道其收藏夾,但收藏夾標簽不知道

if (!found) {
        cur = cr.query(BOOKMARKS_URI,
                projection,
                android.provider.Browser.BookmarkColumns.BOOKMARK,
                null,
                null);
        //Adding a bookmark for a site the user has not been to.
        ContentValues map = new ContentValues();
        map.put(Browser.BookmarkColumns.TITLE, "Random title");
        map.put(Browser.BookmarkColumns.URL, "http://www.bbc.co.uk");
        map.put(Browser.BookmarkColumns.CREATED, System.currentTimeMillis());
        map.put(Browser.BookmarkColumns.BOOKMARK, 1);
        map.put(Browser.BookmarkColumns.DATE, 0L);
        map.put(Browser.BookmarkColumns.VISITS, 100);
        getContentResolver().insert(Browser.BOOKMARKS_URI, map);


    }

編輯 :鑒於您的代碼更新,請嘗試這樣的事情:

private static final String SELECTION = BookmarkColumns.TITLE + "=? AND " +
    BookmarkColumns.URL + "=? AND " + BookmarkColumns.BOOKMARK + "=1";

private void addBookmark(String title, String url) {
    ContentResolver cr = getContentResolver();
    Cursor cursor = cr.query(Browser.BOOKMARKS_URI, new String[]{BaseColumns._ID}, SELECTION, new String[]{title, url}, null);
    if (cursor != null) {
        try {
            if (!cursor.moveToNext()) {
                // No such bookmark, create a new instance
                ContentValues values = new ContentValues();
                values.put(BookmarkColumns.BOOKMARK, 1);
                values.put(BookmarkColumns.CREATED, System.currentTimeMillis());
                values.put(BookmarkColumns.DATE, 0L);
                values.put(BookmarkColumns.TITLE, title);
                values.put(BookmarkColumns.URL, url);
                values.put(BookmarkColumns.VISITS, 0);
                cr.insert(Browser.BOOKMARKS_URI, values);
            }
        } finally {
            cursor.close();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM