2013-04-10 137 views
0

我可以使用下面的方法来查看Android的浏览器历史记录:查询Android浏览器历史记录的网址

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

public class ReadHistoryDetails extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
TextView tv = (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) { 
tv.append("\n" + mCur.getString(titleIdx)); 
tv.append("\n" + mCur.getString(urlIdx)); 
mCur.moveToNext(); 
} 
} 

不过,我想搜索的浏览器历史记录,如果搜索执行新意图匹配我的预定义标准之一。

比方说,我想查询浏览器历史记录包含任何playboy.com

我相信我会用一些诸如:

public class ReadHistoryDetails extends Activity { 
{ 
TextView tv = (TextView)findViewById(R.id.hello); 
String[] projection = new String[] { Browser.BookmarkColumns.TITLE, 
Browser.BookmarkColumns.URL }; 

Cursor cursor = managedQuery(android.provider.Browser.BOOKMARKS_URI, 
projection, null, null, null); 
String urls = ""; 
if (cursor.moveToFirst()) { 
String url1 = null; 
String url2 = null; 
do { 
urls = urls 
+ cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.TITLE)) + " : " 
+ cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.URL)) + "\n"; 
} while (cursor.moveToNext()); 
tv.setText(urls); 
} 

但我发现了一个错误,说明setText(String) is undefined for the type String ....,如以及由于此格式不正确的代码导致搜索结果不足。

+0

是否局部变量'urls'掩盖一些成员? – etienne 2013-04-10 16:19:46

+0

不,我只需要找出一种方法来查询浏览器历史记录中的网址 - 就是这样。 – 2013-04-10 18:02:39

+0

我真的需要这方面的帮助......任何人都可以提供任何建议吗? – 2013-04-10 18:57:20

回答

1

一个天真的实现:

Cursor cursor = managedQuery(android.provider.Browser.BOOKMARKS_URI, 
          projection, null, null, null); 
String urls = ""; 
if (cursor.moveToFirst()) { 
    String url1 = null; 
    String url2 = null; 
    do { 
     // Just check if the url contains www.playboy.com 
     String url = cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.URL)); 
     if (url.toLowerCase().contains("www.playboy.com")) { 
     urls = urls 
      + cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.TITLE)) + " : " 
      + url + "\n"; 
     } 
    } while (cursor.moveToNext()); 
tv.setText(urls); 
} 

更优化的实施将包括直接在查询过滤器:

Cursor cursor = managedQuery(android.provider.Browser.BOOKMARKS_URI, 
          projection, Browser.BookmarkColumns.URL + " LIKE '%playboy.com%'" , null, null); 
相关问题