【问题标题】:Query Android Browser History for a URL查询 URL 的 Android 浏览器历史记录
【发布时间】:2013-04-02 12:17:27
【问题描述】:

我可以使用以下方法查看 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 ....,并且由于此代码格式错误而导致缺少搜索结果。

【问题讨论】:

  • 你的局部变量urls屏蔽了一些成员吗?
  • 没有。我只需要找出一种方法来查询浏览器历史记录中的 url - 就是这样。
  • 我真的需要这方面的帮助...谁能提供任何建议?
  • 对于您的具体错误,它不会在最后一行编译:urls.setText(urls);。因此,我的第一条评论。将该行替换为tv.setText(urls)
  • 谢谢!它现在正在编译!关于如何查询特定条件的任何建议? (如果 playboy.com = true 则启动新意图)

标签: java android google-chrome browser android-intent


【解决方案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);

【讨论】:

    猜你喜欢
    • 2011-11-14
    • 2013-05-21
    • 2011-02-04
    • 1970-01-01
    • 2015-06-14
    • 2023-03-13
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多