国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 下載并打開PDF,Doc,Dwg文檔實例

2019-10-23 18:31:28
字體:
來源:轉載
供稿:網友

今天項目中遇到這樣一個需求 ,根據后臺接口里pdf,doc,dwg文檔的地址 是一個URL ,需要根據文檔的url 下載到本地(內部存儲或內存卡)并用手機中能打開該文檔的軟件彈出來并打開,(這里需要做一個緩存,第一次查看這個文檔是在服務器上下載并打開,以后打開不需要下載直接打開本地的文檔)在網上找了些資料 寫了以下代碼,下面分享給大家;

效果圖:

android,下載pdf文件,打開pdf文件,android打開doc文件

代碼:

這是一個單獨的類 首先接收intent傳過來的url我是用url的后14位作為存儲本地的文件名(這里根據自己服務器的文件命名規則而定) 拿到文件路徑之后 判斷本地是否有此文件 有則打開沒有則從服務器上下載并打開 ;

  Intent intent = act.getIntent();  final String Strname = intent.getStringExtra("docurl");  //截取最后14位 作為文件名  String s = Strname.substring(Strname.length()-14);  //文件存儲  file1 = new File(Environment.getExternalStorageDirectory(), getFileName(s));  new Thread() {   public void run() {    File file = new File( file1.getAbsolutePath());    //判斷是否有此文件    if (file.exists()) {     //有緩存文件,拿到路徑 直接打開     Message msg = Message.obtain();     msg.obj = haha;     msg.what = DOWNLOAD_SUCCESS;     handler.sendMessage(msg);     mProgressDialog.dismiss();     return;    }//    本地沒有此文件 則從網上下載打開    File downloadfile = downLoad(Strname, file1.getAbsolutePath(), mProgressDialog);//    Log.i("Log",file1.getAbsolutePath());    Message msg = Message.obtain();    if (downloadfile != null) {     // 下載成功,安裝....     msg.obj = downloadfile;     msg.what = DOWNLOAD_SUCCESS;    } else {     // 提示用戶下載失敗.     msg.what = DOWNLOAD_ERROR;    }    handler.sendMessage(msg);    mProgressDialog.dismiss();   };  }.start();

下載文檔代碼;

傳入需要下載的文檔的url 和存入內存的路徑和dialog

 public static File downLoad(String serverpath, String savedfilepath, ProgressDialog pd) {  try {   URL url = new URL(serverpath);   HttpURLConnection conn = (HttpURLConnection) url.openConnection();   conn.setConnectTimeout(5000);   if (conn.getResponseCode() == 200) {    int max = conn.getContentLength();    pd.setMax(max);    InputStream is = conn.getInputStream();    File file = new File(savedfilepath);    FileOutputStream fos = new FileOutputStream(file);    int len = 0;    byte[] buffer = new byte[1024];    int total = 0;    while ((len = is.read(buffer)) != -1) {     fos.write(buffer, 0, len);     total += len;     pd.setProgress(total);    }    fos.flush();    fos.close();    is.close();    return file;   } else {    return null;   }  } catch (Exception e) {   e.printStackTrace();  } }

打開文件選擇器

Handler handler = new Handler() {  public void handleMessage(android/58557.html">android.os.Message msg) {   switch (msg.what) {   case DOWNLOAD_SUCCESS:    File file = (File) msg.obj;    Intent intent = new Intent("android.intent.action.VIEW");    intent.addCategory("android.intent.category.DEFAULT");    intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);    intent.setDataAndType (Uri.fromFile(file), "application/pdf");//    startActivity(intent);    startActivity(Intent.createChooser(intent, "標題"));    /**     * 彈出選擇框之后 把本activity銷毀     */    finish();    break;   case DOWNLOAD_ERROR:    Util.showToast(act,"文件加載失敗");    break;   }  } };

整體代碼

public class list_item_doc extends BaseActivity { private ProgressDialog mProgressDialog; // 下載失敗 public static final int DOWNLOAD_ERROR = 2; // 下載成功 public static final int DOWNLOAD_SUCCESS = 1; private File file1; @Override protected void onCreate(Bundle arg0) {  // TODO Auto-generated method stub  super.onCreate(arg0);  initView(); } private void initView() {  // TODO Auto-generated method stub  Intent intent = act.getIntent();  final String Strname = intent.getStringExtra("url");  mProgressDialog = new ProgressDialog(act);  mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  mProgressDialog.setCancelable(false);  mProgressDialog.show();  //截取最后14位 作為文件名  String s = Strname.substring(Strname.length()-14);  //文件存儲  file1 = new File(Environment.getExternalStorageDirectory(), getFileName(s));  new Thread() {   public void run() {    File haha = new File( file1.getAbsolutePath());    //判斷是否有此文件    if (haha.exists()) {     //有緩存文件,拿到路徑 直接打開     Message msg = Message.obtain();     msg.obj = haha;     msg.what = DOWNLOAD_SUCCESS;     handler.sendMessage(msg);     mProgressDialog.dismiss();     return;    }//    本地沒有此文件 則從網上下載打開    File downloadfile = downLoad(Strname, file1.getAbsolutePath(), mProgressDialog);//    Log.i("Log",file1.getAbsolutePath());    Message msg = Message.obtain();    if (downloadfile != null) {     // 下載成功,安裝....     msg.obj = downloadfile;     msg.what = DOWNLOAD_SUCCESS;    } else {     // 提示用戶下載失敗.     msg.what = DOWNLOAD_ERROR;    }    handler.sendMessage(msg);    mProgressDialog.dismiss();   };  }.start(); } /**  * 下載完成后 直接打開文件  */ Handler handler = new Handler() {  public void handleMessage(android.os.Message msg) {   switch (msg.what) {   case DOWNLOAD_SUCCESS:    File file = (File) msg.obj;    Intent intent = new Intent("android.intent.action.VIEW");    intent.addCategory("android.intent.category.DEFAULT");    intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);    intent.setDataAndType (Uri.fromFile(file), "application/pdf");//    startActivity(intent);    startActivity(Intent.createChooser(intent, "標題"));    /**     * 彈出選擇框 把本activity銷毀     */    finish();    break;   case DOWNLOAD_ERROR:    Util.showToast(act,"文件加載失敗");    break;   }  } };/** * */ /**  * 傳入文件 url 文件路徑 和 彈出的dialog 進行 下載文檔  */ public static File downLoad(String serverpath, String savedfilepath, ProgressDialog pd) {  try {   URL url = new URL(serverpath);   HttpURLConnection conn = (HttpURLConnection) url.openConnection();   conn.setConnectTimeout(5000);   if (conn.getResponseCode() == 200) {    int max = conn.getContentLength();    pd.setMax(max);    InputStream is = conn.getInputStream();    File file = new File(savedfilepath);      FileOutputStream fos = new FileOutputStream(file);    int len = 0;    byte[] buffer = new byte[1024];    int total = 0;    while ((len = is.read(buffer)) != -1) {     fos.write(buffer, 0, len);     total += len;     pd.setProgress(total);    }    fos.flush();    fos.close();    is.close();    return file;   } else {    return null;   }  } catch (Exception e) {   e.printStackTrace();   return null;  } } public static String getFileName(String serverurl) {  return serverurl.substring(serverurl.lastIndexOf("/") + 1); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦东新区| 太谷县| 朔州市| 济南市| 宝丰县| 沂水县| 城固县| 凤台县| 石景山区| 姜堰市| 安陆市| 宁乡县| 漳州市| 汉沽区| 广昌县| 武乡县| 日土县| 竹山县| 中西区| 龙泉市| 吴旗县| 曲周县| 林州市| 古蔺县| 阿瓦提县| 集安市| 峨山| 巧家县| 镇坪县| 峨眉山市| 得荣县| 红安县| 顺平县| 谢通门县| 周宁县| 喀喇| 韶山市| 都匀市| 桂林市| 奉节县| 腾冲县|