0
我正在开发一款android应用程序,该应用程序可以读取/查看浏览器历史记录 ,其中包含日期和时间戳(可选) 。如何阅读Android手机中的浏览器历史记录
帮助我:(
我尝试此代码,它让我发送错误
这是主要activity.java
package com.example.delli5.bclean;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
import android.provider.Browser;
import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ArrayList<String> titles;
private ArrayList<String> urls;
private ArrayList<Bitmap> bitmaps;
private ContentResolver cr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createLists();
}
protected void onResume(){
super.onResume();
getBH();
showHistoryBookmarks();
}
public void createLists(){
titles=new ArrayList<String>();
urls=new ArrayList<String>();
bitmaps=new ArrayList<Bitmap>();
}
public void getBH(){
Bitmap icon;
cr=getContentResolver();
String order=Browser.BookmarkColumns.DATE+" DESC";
String[] projection={Browser.BookmarkColumns.TITLE,Browser.BookmarkColumns.URL,Browser.BookmarkColumns.FAVICON};
//String selection=projection[0]+"=?";
//String args[]={"Google"};
Cursor rows=cr.query(Browser.BOOKMARKS_URI,projection, null,null,order);
if(rows.getCount()>0){
while(rows.moveToNext()) {
//read title
String title=rows.getString(rows.getColumnIndex(projection[0]));
//read url
String url=rows.getString(rows.getColumnIndex(projection[1]));
//read icon
byte[] bicon=rows.getBlob(rows.getColumnIndex(projection[2]));
if(bicon!=null){
//convert blob image data to Bitmap
icon=BitmapFactory.decodeByteArray(bicon,0,bicon.length);
}
else{
//default icon for history and bookmarks that do not icons
icon=BitmapFactory.decodeResource(getResources(),R.drawable.noicon);
}
//add to lists
addToList(title,url,icon);
}
//close the cursor
rows.close();
}
}
public void addToList(String title,String url, Bitmap bitmap){
titles.add(title);
urls.add(url);
bitmaps.add(bitmap);
}
public void showHistoryBookmarks(){
ListView l=(ListView) findViewById(R.id.hb_list);
if(l!=null){
if(titles.size()>0){
ListAdapterModel aa=new ListAdapterModel(this,R.layout.listlayout,R.id.hbtitle,titles,urls,bitmaps);
l.setAdapter(aa);
}
else{
Toast.makeText(this, "This is no bookmark or history.", Toast.LENGTH_SHORT).show();
}
}
}
public void cleanHB(){
if(Browser.canClearHistory(cr)){
Browser.clearHistory(cr); //clear history data
createLists(); //recreate the lists
onResume(); //update the list
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
if(item.getItemId()==R.id.action_clean)
{
cleanHB();
}
return false;
}
}
}
}
,这是listadaptermodel.java
package com.example.delli5.bclean;
/**
* Created by delli5 on 1/9/2016.
*/
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ListAdapterModel {
extends ArrayAdapter<String>
{
int groupid;
ArrayList<String> titles;
ArrayList<String> urls;
ArrayList<Bitmap> bitmaps;
Context context;
String path;
public ListAdapterModel(Context context, int vg, int id, ArrayList<
String > titles, ArrayList <String> urls, ArrayList <Bitmap> bitmaps){
super(context, vg, id, titles);
this.context = context;
groupid = vg;
this.titles = titles;
this.urls = urls;
this.bitmaps = bitmaps;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(groupid, parent, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.icon);
imageView.setImageBitmap(bitmaps.get(position));
TextView textTitle = (TextView) itemView.findViewById(R.id.hbtitle);
String title = titles.get(position);
textTitle.setText(title);
TextView textURL = (TextView) itemView.findViewById(R.id.hburl);
String url = urls.get(position);
textURL.setText(url);
//make the url clickable
Linkify.addLinks(textURL, Linkify.ALL);
return itemView;
}
}
我坚持着同样的问题。你找到解决方案吗?如果是这样,请在此发布。 –