John Crowley
John Crowley

Reputation: 13

Query Android Browser History for a URL

I'm able to view the Android browser history using the following method:

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

However I'd like to search the browser history and perform a new intent if the search matches one of my predefined criteria.

Let's say I wanted to query the browser history for anything containing playboy.com

I presume I would use something such as:

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

But I'm getting an error stating setText(String) is undefined for the type String ...., as well as a lack of search results due to this misformatted code.

Upvotes: 0

Views: 1394

Answers (1)

etienne
etienne

Reputation: 3206

A naive implementation:

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

A more optimized implementation would be to include the filter directly in the query:

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

Upvotes: 1

Related Questions