Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)
2016-04-21 14:54
639 查看
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/716934/o_Android%e5%ae%9e%e4%be%8b%e4%b9%8bIdHTTP%e4%b8%8b%e8%bd%bd.png)
相关资料:
1.群号 383675978
2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.com/InfoView/Article_4588.html
3.编译时提示"[Exec Error] The command ..... exited with code 1."错误原因不明,解决方法删除androidSDK,下载新版本的,引入新版本的SDK。
实例源码:
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, System.IOUtils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, Androidapi.Jni.Net,//TJnet_Uri使用 Androidapi.JNI.JavaTypes, //Jfile使用 Androidapi.JNI.GraphicsContentViewText,//JIntent使用 Androidapi.Helpers,//stringtojstring使用 IdHTTP;//TPath使用 type TForm1 = class(TForm) Label1: TLabel; ProgressBar1: TProgressBar; Label2: TLabel; Button1: TButton; IdHTTP1: TIdHTTP; procedure Button1Click(Sender: TObject); procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode); private { Private declarations } isDown:Boolean; function DownFilePath: string; public { Public declarations } end; const FileName = 'test.apk'; var Form1: TForm1; implementation {$R *.fmx} {$R *.NmXhdpiPh.fmx ANDROID} procedure TForm1.Button1Click(Sender: TObject); var sURLPath,sFilePath: string; oFile: TFileStream; begin isDown := True; sFilePath := DownFilePath + FileName; if FileExists(sFilePath) then //判断以前文件是否存在 DeleteFile(sFilePath); // sURLPath:= 'http://bcscdn.baidu.com/netdisk/BaiduYun_7.12.1.apk';//文件下载地址(用百度云测试了) // 本来想用百度云的,我艹,不知道为什么百度云下载着,就提示“connection closed gracefully” sURLPath:= 'http://m.down.sandai.net/MobileThunder/Android_5.15.2.3820/XLWXguanwang.apk';//文件下载地址(用百度云测试了) oFile := TFileStream.Create(sFilePath, fmCreate); //文件下载后保存的路径 try ProgressBar1.Value := 0; IdHTTP1.Get(sURLPath, oFile); except end; oFile.Free; end; function TForm1.DownFilePath: string; begin Result := TPath.GetDownloadsPath + PathDelim; end; procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin ProgressBar1.Value := AWorkCount; end; procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); begin ProgressBar1.Value := AWorkCountMax; end; procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode); {$IFDEF ANDROID} Var oFile: Jfile; oIntent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} //下载完成后自动安装 if isDown then begin Try oFile := TJfile.JavaClass.init(stringtojstring(DownFilePath), stringtojstring(FileName)); oIntent := TJIntent.Create; oIntent.setAction(TJIntent.JavaClass.ACTION_VIEW); oIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); oIntent.setDataAndType(TJnet_Uri.JavaClass.fromFile(oFile), StringToJString('application/vnd.android.package-archive')); SharedActivityContext.startActivity(oIntent); Except End; end; {$ENDIF} end; end.
相关文章推荐
- HTTP 状态消息
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
- Android网络数据JSON和XML的解析
- SpringMVC @RequestBody接收Json对象字符串--http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html
- 在centos中搭建基于smart http的git server
- Syslog-ng+Rsyslog收集日志:RELP可靠传输,替代UDP、TCP(五)
- 做淘宝必做的详情页太原网络营销师讲7个模块9个知识点?
- cocos2dx CCHttpRequest里面的内存引用计数的故事
- Android中HTTPS应用开发--HTTPS介绍
- Stanford公开课--神经网络的学习
- php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- 音频对列服务——播放网络的音频——转载
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- Android网络编程之WebView初探
- Android的网络编程
- ASI用法
- bzoj 4538: [Hnoi2016]网络
- SpringMVC源码剖析(五)-消息转换器HttpMessageConverter
- iOS 使用AFNetworking 3.0库进行网络请求时,取消单个队列和全部队列的方法(取消网络请求)
- python BaseHTTPServer重启失败,提示端口被占用