Почему я не вижу закладки, которые я создал программно при тестировании на моем устройстве? - PullRequest
1 голос
/ 17 января 2012

У меня есть приложение, которое показывает мне все закладки.Я могу перечислить закладки, затем моя кнопка добавляет закладку.Я не реализовал код для обновления списка сразу, но когда я возвращаюсь, новая закладка отображается в списке.Это закладки по умолчанию, которые я добавляю и добавляю эти поля

 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, и это работает без проблем, но когда я пробую его на моем Samsung Galaxy S2, работающем на версии 2.3.3, он добавляет в список.Я прошел через устройство, и закладка создана. Я знаю это, потому что мой код настроен на добавление, если он не может найти, или просто переписывает, если он находит.

У меня установлено более одного браузера. На моем устройстве установлены Firefox и Opera.Firefox хранит свои собственные закладки, и я еще не использовал Opera

вот весь код добавления закладок

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);


    }

1 Ответ

0 голосов
/ 17 января 2012

Редактировать : При обновлении кода попробуйте что-то вроде этого:

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();
        }
    }
}
...