Android中获取,增加,删除Browser书签 .

来源:互联网 发布:汉诺塔递归算法 java 编辑:程序博客网 时间:2024/06/01 09:53

首先在AndroidMainfest.xml中增加对bookmark的写权限:

<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>

 

package com.mybm;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Browser;
import android.provider.Browser.BookmarkColumns;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
 private ListView listView;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  insertBookMark();
  deleteBookMark();
  this.makeFileDir();
  listView = (ListView) findViewById(R.id.bookmarklist);
  listView.setAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_expandable_list_item_1, getData()));

 }

 private List<String> getData() {

  List<String> data = new ArrayList<String>();
 // data.add("哈哈哈哈");
  ContentResolver contentResolver = getContentResolver();
  Cursor cursor = contentResolver.query(Browser.BOOKMARKS_URI, null,
    null, null, null);

  while (cursor.moveToNext()) {
   if (cursor.getString(
     cursor.getColumnIndex(Browser.BookmarkColumns.BOOKMARK))
     .equals("1")) {
    data.add(cursor.getString(cursor
      .getColumnIndex(BookmarkColumns.TITLE)));
   }
  }

  return data;
 }

 private void insertBookMark() {
  ContentValues inputValue = new ContentValues();
  // Bookmark值为1
  inputValue.put(Browser.BookmarkColumns.BOOKMARK, 1);
  // 添加书签Title
  inputValue.put(Browser.BookmarkColumns.TITLE, "witmob");
  // 添加书签URL
  inputValue.put(Browser.BookmarkColumns.URL,
    "http://bigcat.easymorse.com/");

  ContentResolver contentResolver = getContentResolver();

  // 向浏览器添加该书签

  contentResolver.insert(Browser.BOOKMARKS_URI, inputValue);

 }

 private void deleteBookMark() {

  ContentResolver contentResolver = getContentResolver();

  // 删除书签

  int number = contentResolver.delete(Browser.BOOKMARKS_URI,
    Browser.BookmarkColumns.TITLE + "=? and "
      + Browser.BookmarkColumns.URL + "=?", new String[] {
      "witmob", "http://bigcat.easymorse.com/" });

 }
 public void makeFileDir(){
   File bookMarkFile = new File(Environment.getExternalStorageDirectory().getPath());
    try {
     if(!bookMarkFile.exists()){
      bookMarkFile.mkdir();
     }
     FileWriter fw =new FileWriter(bookMarkFile+File.separator+"my.txt",true);
   
    ContentResolver contentResolver = getContentResolver();
    Cursor cursor = contentResolver.query(Browser.BOOKMARKS_URI, null,
      null, null, null);

    while (cursor.moveToNext()) {
    
     if (cursor.getString(
       cursor.getColumnIndex(Browser.BookmarkColumns.BOOKMARK))
       .equals("1")) {
       fw.write(cursor.getString(cursor
        .getColumnIndex(BookmarkColumns.TITLE))+"\n");
       fw.write(cursor.getString(cursor
         .getColumnIndex(BookmarkColumns.URL))+"\n");
     }
    }
    
    
     fw.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
}

 

 

 

增加书签,方法很简单,给ContentValues赋值,然后调用ContentResolver 的insert方法。

private void insertBookMark() { 
    ContentValues inputValue = new ContentValues(); 
    // Bookmark值为1 
    inputValue.put(Browser.BookmarkColumns.BOOKMARK, 1); 
    // 添加书签Title 
    inputValue.put(Browser.BookmarkColumns.TITLE, "witmob"); 
    // 添加书签URL 
    inputValue.put(Browser.BookmarkColumns.URL, 
            "http://bigcat.easymorse.com/");

    ContentResolver contentResolver = getContentResolver();

    // 向浏览器添加该书签

    contentResolver.insert(Browser.BOOKMARKS_URI, inputValue);

}

删除书签方法如下:

private void deleteBookMark() {

    ContentResolver contentResolver = getContentResolver();

    // 删除书签

    int number = contentResolver.delete(Browser.BOOKMARKS_URI, 
            Browser.BookmarkColumns.TITLE + "=? and " 
                    + Browser.BookmarkColumns.URL + "=?", new String[] { 
                    "witmob", "http://bigcat.easymorse.com/" });

}

ContentResolver 的delete方法需要三个参数,第一个是URI,第二个参数类似sql语句的where条件,这里是:

Browser.BookmarkColumns.TITLE + "=?  and  "+ Browser.BookmarkColumns.URL + "=?"

第三个参数为第二个where参数中的“?”赋值,顺序要前后对应。这里String数组第一个对应TITLE,第二个对应URL。

源码链接:http://bigcateasymorse.googlecode.com/svn/trunk/androidbookmark1.1/

 

1 0
原创粉丝点击