电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android基于開源項(xiàng)目xutils3實(shí)現(xiàn)下載

瀏覽:21日期:2022-09-21 16:27:39

上一次自己寫了一個(gè)多線程斷點(diǎn)續(xù)傳下載的demo,過于麻煩,bug超多,所以我學(xué)習(xí)使用xutils來完成此功能。

先將xutils依賴搭建好(上一篇博客已經(jīng)具體寫了方法)

先看看效果圖:

Android基于開源項(xiàng)目xutils3實(shí)現(xiàn)下載Android基于開源項(xiàng)目xutils3實(shí)現(xiàn)下載

下面開始代碼的邏輯:

在xutils3以前使用HttpUtils新建對(duì)象即可使用,3以后取消了HttpUtils,具體方法請(qǐng)看代碼。

首先創(chuàng)建布局activity_main.xml:

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' tools:context='.MainActivity'> <EditText android: android:layout_width='match_parent' android:layout_height='wrap_content' android:hint='請(qǐng)輸入下載路徑' android:text='http://10.173.29.234/gp.apk' /> <Button android:layout_width='wrap_content' android:layout_height='wrap_content' android:text='下載' android:onClick='click'/> <ProgressBar android: android:layout_width='match_parent' android:layout_height='wrap_content' /></LinearLayout>

然后MainActivity.java:

import android.app.Activity;import android.content.pm.PackageManager;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.Toast;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.io.File;public class MainActivity extends AppCompatActivity { private EditText et_path; private ProgressBar pb; //動(dòng)態(tài)獲取權(quán)限 private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { 'android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE' }; private String fileName; private String appName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //動(dòng)態(tài)獲取權(quán)限 verifyStoragePermissions(this); x.view().inject(this); et_path = findViewById(R.id.et_path); pb = findViewById(R.id.progressBar); } //點(diǎn)擊按鈕下載(斷點(diǎn)續(xù)傳) public void click(View view) { //拿到路徑 String path = et_path.getText().toString().trim(); fileName = getFileName(path); RequestParams params = new RequestParams(path); params.setSaveFilePath(fileName); params.setAutoRename(true); x.http().get(params, new Callback.ProgressCallback<File>() { @Override public void onWaiting() { } @Override public void onStarted() { } @Override public void onLoading(long total, long current, boolean isDownloading) {//totle代表總進(jìn)度,current代表當(dāng)前進(jìn)度pb.setMax((int) total);pb.setProgress((int) current);System.out.println('測(cè)試1'); } @Override public void onSuccess(File result) {System.out.println('下載完成');Toast.makeText(getApplicationContext(), '下載成功', Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable ex, boolean isOnCallback) {System.out.println('測(cè)試2'); } @Override public void onCancelled(CancelledException cex) {System.out.println('測(cè)試3'); } @Override public void onFinished() {System.out.println('測(cè)試4'); } }); } //動(dòng)態(tài)獲取權(quán)限 public static void verifyStoragePermissions(Activity activity) { try { //檢測(cè)是否有寫的權(quán)限 int permission = ActivityCompat.checkSelfPermission(activity, 'android.permission.WRITE_EXTERNAL_STORAGE'); if (permission != PackageManager.PERMISSION_GRANTED) {// 沒有寫的權(quán)限,去申請(qǐng)寫的權(quán)限,會(huì)彈出對(duì)話框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { e.printStackTrace(); } } //獲取文件名-->'http://10.173.29.234/test.exe' public String getFileName(String path) { int start = path.lastIndexOf('/') + 1; appName = path.substring(start);// String fileName = Environment.getExternalStorageDirectory().getPath()+'/'+subString; String fileName = '/sdcard/file/'+ appName; return fileName; }}

第53行注意x.http().get(params, new Callback.ProgressCallback<File>(){};<>中要寫File,因?yàn)橄螺d的是一個(gè)文件,否則文件不會(huì)下載下來。

還要加上權(quán)限:

<uses-permission android:name='android.permission.INTERNET' /> <uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE' /> <uses-permission android:name='android.permission.READ_EXTERNAL_STORAGE' />

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 商标转让-商标注册-商标查询-软著专利服务平台 - 赣江万网 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 海南在线 海南一家| 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 自动配料系统_称重配料控制系统厂家 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 重庆中专|职高|技校招生-重庆中专招生网 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 井式炉-台车式回火炉-丹阳市电炉厂有限公司 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 安徽成考网-安徽成人高考网 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 视频直播 -摄影摄像-视频拍摄-直播分发 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 常州律师事务所_常州律所_常州律师-江苏乐天律师事务所 | 服务器之家 - 专注于服务器技术及软件下载分享 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 |