2011-10-02 35 views
4

我想從android瀏覽器中獲取歷史記錄和搜索結果。 在下面的代碼我得到的所有書籤,它的偉大工程:在android中獲取瀏覽器歷史記錄和搜索結果

public void getBrowser(){ 
    String[] requestedColumns = { 
     Browser.BookmarkColumns.TITLE, 
     Browser.BookmarkColumns.VISITS, 
     Browser.BookmarkColumns.BOOKMARK 
    }; 
    Cursor faves = managedQuery(Browser.BOOKMARKS_URI, requestedColumns, 
    Browser.BookmarkColumns.BOOKMARK + "=1", null, Browser.BookmarkColumns.VISITS); 
    Log.d(DEBUG_TAG, "Bookmarks count: " + faves.getCount()); 
    int titleIdx = faves.getColumnIndex(Browser.BookmarkColumns.TITLE); 
    int visitsIdx = faves.getColumnIndex(Browser.BookmarkColumns.VISITS); 
    int bmIdx = faves.getColumnIndex(Browser.BookmarkColumns.BOOKMARK); 
    faves.moveToFirst(); 
    while (!faves.isAfterLast()) { 
     Log.d("SimpleBookmarks", faves.getString(titleIdx) + " visited " + faves.getInt(visitsIdx) + " times : " + (faves.getInt(bmIdx) != 0 ? "true" : "false")); 
     faves.moveToNext(); 
    } 
} 

當我試圖只得到來自瀏覽器的歷史,我想下面的代碼:

public void getBrowserHist() { 
    Cursor mCur = managedQuery(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, null); 
    mCur.moveToFirst(); 
    if (mCur.moveToFirst() && mCur.getCount() > 0) { 
     while (mCur.isAfterLast() == false) { 
      Log.v("titleIdx", mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); 
      Log.v("urlIdx", mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); 
      mCur.moveToNext(); 
     } 
    } 
} 

的問題我現在可以獲得所有書籤,歷史記錄和訪問量最高的頁面。我只想要歷史專欄。我也不想從谷歌搜索搜索結果。我已經嘗試過SEARCHES_URI對象,但是我無法使其工作。 有沒有人有任何建議hove我可以解決我的問題?

回答

10

提取一些奇怪的原因,谷歌決定混合書籤和歷史美其名曰SDK中的「書籤」。 請嘗試以下代碼,重要的是按「書籤」類型進行過濾。

String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL }; 
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 = bookmark 
    mCur = this.managedQuery(Browser.BOOKMARKS_URI, proj, sel, null, null); 
    this.startManagingCursor(mCur); 
    mCur.moveToFirst(); 

    String title = ""; 
    String url = ""; 

    if (mCur.moveToFirst() && mCur.getCount() > 0) { 
     while (mCur.isAfterLast() == false && cont) { 

      title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE)); 
      url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL)); 
      // Do something with title and url 

      mCur.moveToNext(); 
     } 
    } 
1

試試這個:

package higherpass.TestingData; 

import android.app.Activity; 
import android.os.Bundle; 
import android.provider.Browser; 
import android.widget.TextView; 
import android.database.Cursor; 

public class TestingData extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView view = (TextView) findViewById(R.id.hello); 
     String[] projection = new String[] { 
      Browser.BookmarkColumns.TITLE 
      , Browser.BookmarkColumns.URL 
     }; 
     Cursor mCur = managedQuery(android.provider.Browser.BOOKMARKS_URI, 
      projection, null, null, null 
      ); 
     mCur.moveToFirst(); 
     int titleIdx = mCur.getColumnIndex(Browser.BookmarkColumns.TITLE); 
     int urlIdx = mCur.getColumnIndex(Browser.BookmarkColumns.URL); 
     while (mCur.isAfterLast() == false) { 
      view.append("n" + mCur.getString(titleIdx)); 
      view.append("n" + mCur.getString(urlIdx)); 
      mCur.moveToNext(); 
     } 

    } 
} 

here

+0

It's不工作,得到如下錯誤:ERROR/AndroidRuntime(558):了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.hda.ContentProviders/com.hda.ContentProviders.SecondTab}: java.lang.NullPointerException:println需要消息 – user969579

+0

顯示所有調試信息(也是原因,以及它的確切位置) –

+0

java.lang.RuntimeException:無法啓動活動ComponentInfo {com.hda.ContentProviders/com.hda.ContentProviders .SecondTab}:java.lang.NullPointerException:println需要一條消息 – user969579