亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android下保存簡單網頁到本地(包括簡單圖片鏈接轉換)實現代碼

2020-04-11 11:54:28
字體:
來源:轉載
供稿:網友

最近在做一個項目涉及到將包含圖片的簡單網頁下載到本地,方便離線時觀看,在這里分享一下,大家做下簡單修改就可以用到自己的項目中了。(這里用到了AQuery庫)

復制代碼 代碼如下:

package com.nekocode.xuedao.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.androidquery.AQuery;
import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.nekocode.xuedao.PublicData;
import com.nekocode.xuedao.PublicData.Subscribe;

public class HtmlStorageHelper {
 private String URL = "http://eduproject.sinaapp.com/fetchurl.php/getcontent/";
 private PublicData pd;
 private AQuery aq;
 private SQLiteDatabase mDB;
 private String mDownloadPath;

 public HtmlStorageHelper(Context context) {
  pd = PublicData.getInstance();
  aq = new AQuery(context);
  mDB = context.openOrCreateDatabase("data.db", Context.MODE_PRIVATE, null);
  mDB.execSQL("create table if not exists download_html(_id INTEGER PRIMARY KEY AUTOINCREMENT, content_id TEXT NOT NULL, title TEXT NOT NULL)");

  mDownloadPath = pd.mAppPath + "download/";
  File dir_file = new File(pd.mAppPath + "download/");
  if(!dir_file.exists())
   dir_file.mkdir();
 }

 public void saveHtml(final String id, final String title) {
  if(isHtmlSaved(id))
   return;

  aq.ajax(URL+id, String.class, new AjaxCallback<String>() {
   @Override
   public void callback(String url, String html, AjaxStatus status) {
    File dir_file = new File(mDownloadPath + id);
    if(!dir_file.exists())
     dir_file.mkdir();

    Pattern pattern = Pattern.compile("(?<=src=/")[^/"]+(?=/")");
    Matcher matcher = pattern.matcher(html);
    StringBuffer sb = new StringBuffer();
    while(matcher.find()){
     downloadPic(id, matcher.group(0));
     matcher.appendReplacement(sb, formatPath(matcher.group(0)));
    }
    matcher.appendTail(sb);
    html = sb.toString();

    writeHtml(id, title, html);
   }
  });
 }

 private void downloadPic(String id, String url) {
  File pic_file = new File(mDownloadPath + id + "/" + formatPath(url));
  aq.download(url, pic_file, new AjaxCallback<File>() {
   @Override
   public void callback(String url, final File file, AjaxStatus status) {
   }
  });
 }

 private void writeHtml(String id, String title, String html) {
  File html_file = new File(mDownloadPath + id + "/index.html");
  FileOutputStream fos = null;
  try {
   fos=new FileOutputStream(html_file);
            fos.write(html.getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                fos.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }

  ContentValues values = new ContentValues();
  values.put("content_id", id);
  values.put("title", title);
  mDB.insert("download_html", "_id", values);
 }

 public boolean isHtmlSaved(String id) {
  File file = new File(mDownloadPath + id);
  if(file.exists()) {
   file = new File(mDownloadPath + id + "/index.html");
   if(file.exists())
    return true;
  }
  deleteHtml(id);
  return false;
 }

 public String getTitle(String id) {
  Cursor c = mDB.rawQuery("select * from download_html where content_id=?", new String[]{id});
  if(c.getCount() == 0)
   return null;

  c.moveToFirst();
  int index1 = c.getColumnIndex("title");

  return c.getString(index1);
 }

 public ArrayList<Subscribe> getHtmlList() {
  Cursor c = mDB.rawQuery("select * from download_html", null);
  ArrayList<Subscribe> list = new ArrayList<Subscribe>();
  if(c.getCount() != 0) {
   c.moveToFirst();
   int index1 = c.getColumnIndex("content_id");
   int index2 = c.getColumnIndex("title");

   while (!c.isAfterLast()) {
    String id = c.getString(index1);
    if(isHtmlSaved(id)) {
     Subscribe sub = new Subscribe(
       id,
       c.getString(index2),
       Subscribe.FILE_DOWNLOADED
       );
     list.add(sub);
    }

    c.moveToNext();
   }
  }

  return list;
 }

 public void deleteHtml(String id) {
  mDB.delete("download_html", "content_id=?", new String[]{id});
  File dir_file = new File(mDownloadPath + id);
  deleteFile(dir_file);
 }

 private void deleteFile(File file) {
  if (file.exists()) { // 判斷文件是否存在
   if (file.isFile()) { // 判斷是否是文件
    file.delete(); // delete()方法 你應該知道 是刪除的意思;
   } else if (file.isDirectory()) { // 否則如果它是一個目錄
    File files[] = file.listFiles(); // 聲明目錄下所有的文件 files[];
    for (int i = 0; i < files.length; i++) { // 遍歷目錄下所有的文件
     this.deleteFile(files[i]); // 把每個文件 用這個方法進行迭代
    }
   }
   file.delete();
  } else {
   //
  }
 }

 private String formatPath(String path) {
        if (path != null && path.length() > 0) {
            path = path.replace("http://", "_");
            path = path.replace("/", "_");
            path = path.replace(":", "_");
            path = path.replace("*", "_");
            path = path.replace("?", "_");
            path = path.replace("/"", "_");
            path = path.replace("<", "_");
            path = path.replace("|", "_");
            path = path.replace(">", "_");
        }
        return path;
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久热精品视频在线观看一区| 国产精品欧美日韩| 午夜欧美不卡精品aaaaa| 国产精品国模在线| 色噜噜久久综合伊人一本| 夜夜嗨av色一区二区不卡| 精品视频在线播放| 国产精品视频yy9099| 日韩精品福利网站| 在线视频亚洲欧美| 欧美视频中文字幕在线| 69av在线播放| 久久国产精彩视频| 欧美成人精品激情在线观看| 韩国视频理论视频久久| 欧美日韩国产精品一区| www.亚洲男人天堂| 国产有码在线一区二区视频| 国产精品视频色| 欧美一区视频在线| 国产97免费视| 欧美成人亚洲成人日韩成人| 欧美另类极品videosbest最新版本| 国产亚洲aⅴaaaaaa毛片| 欧美午夜影院在线视频| 国产精品都在这里| 韩国三级电影久久久久久| 国产精品久久久久久久久久久久久久| 色综合久久天天综线观看| 欧美成人中文字幕在线| 亚洲精品久久久久| 国产精品精品一区二区三区午夜版| 亚洲第一黄色网| 国产精品久久久久久超碰| 日韩不卡在线观看| 在线成人一区二区| 久久精品青青大伊人av| 一区二区三区国产在线观看| 成人情趣片在线观看免费| 久操成人在线视频| 久久精品视频亚洲| 欧美日本精品在线| 日韩一级黄色av| 尤物精品国产第一福利三区| 深夜精品寂寞黄网站在线观看| 欧美高清一级大片| 最好看的2019的中文字幕视频| 色悠悠久久久久| 国产精品自拍视频| 少妇久久久久久| 欧美国产日韩在线| 国产精品一区久久久| 欧美精品中文字幕一区| 亚州欧美日韩中文视频| 欧美成人精品在线| 色偷偷偷亚洲综合网另类| 97精品国产97久久久久久| 亚洲精品自产拍| 日韩欧美有码在线| 亚洲一区二区三区香蕉| 亚洲国产精品女人久久久| 日韩免费观看视频| 欧美激情免费观看| 国产日韩欧美综合| 国产精品91在线观看| 性欧美激情精品| 欧美猛交免费看| 欧美在线精品免播放器视频| 国产日韩欧美成人| 精品国偷自产在线视频99| 亚洲精品中文字幕女同| 欧美日韩一区二区免费视频| 亚洲人成欧美中文字幕| 中文字幕成人精品久久不卡| 91成人在线观看国产| 国产精品福利在线| 国产日韩综合一区二区性色av| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品视频免费在线观看| 欧美激情奇米色| 欧美视频国产精品| 91九色国产视频| 欧美精品免费看| 国产精品美女免费看| 色一情一乱一区二区| 国产精品久久久精品| 久久中文字幕视频| 69国产精品成人在线播放| 国产日韩欧美电影在线观看| 91精品成人久久| 日韩电影在线观看免费| 欧美激情一级精品国产| 国产精品久久精品| 精品自在线视频| 亚洲综合最新在线| 欧美极品欧美精品欧美视频| 欧美日韩在线观看视频小说| 亚洲性无码av在线| 日韩在线观看网址| 亚洲欧美日韩视频一区| 久久久久久这里只有精品| 欧美日韩国产精品一区二区不卡中文| 精品中文视频在线| 欧美日韩国产精品一区二区不卡中文| 91精品免费看| 久久97久久97精品免视看| 综合网中文字幕| 成人黄在线观看| 色偷偷av一区二区三区乱| 国产欧美在线播放| 2019中文字幕在线免费观看| 欧美日韩在线影院| 91久久久久久久| 国产专区欧美专区| 国产99视频在线观看| 国产精品白丝jk喷水视频一区| 成人欧美一区二区三区黑人孕妇| 久久99亚洲热视| 国产一区二区三区在线看| 亚洲成人精品av| 欧美精品一区在线播放| 国产精品香蕉在线观看| 97久久超碰福利国产精品…| 久久精品国产亚洲一区二区| 在线亚洲男人天堂| 精品小视频在线| 亚洲美女精品成人在线视频| 欧美午夜视频在线观看| 久久久久久成人| 国产精品激情av在线播放| 超碰97人人做人人爱少妇| 狠狠久久亚洲欧美专区| 欧美裸体xxxx极品少妇软件| 欧洲精品毛片网站| 精品国产乱码久久久久久天美| 成人久久18免费网站图片| 色妞一区二区三区| 色yeye香蕉凹凸一区二区av| 日韩在线免费高清视频| 性欧美在线看片a免费观看| 欧美夫妻性生活xx| 日韩美女av在线| 97婷婷大伊香蕉精品视频| 欧美激情精品久久久久久免费印度| 91中文字幕在线| 97碰在线观看| 亚洲国产精品网站| 国产一区二区三区在线看| 国产成人精品最新| 日韩高清av一区二区三区| 91精品久久久久久久久久另类| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲视频在线免费观看| 最新69国产成人精品视频免费| 日韩成人av网| 91免费人成网站在线观看18| 午夜精品久久久久久久99热| 亚洲精品视频中文字幕| 九九精品视频在线观看| 午夜精品一区二区三区视频免费看| 亚洲精品日韩欧美| 亚洲老头老太hd| 亚洲丝袜av一区| 91免费的视频在线播放|