Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)
2023-09-14 08:57:11 时间
相关资料:
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。
实例源码:
1 unit Unit1;
2
3 interface
4
5 uses
6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
8 FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects,
9 System.IOUtils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
10 Androidapi.Jni.Net,//TJnet_Uri使用
11 Androidapi.JNI.JavaTypes, //Jfile使用
12 Androidapi.JNI.GraphicsContentViewText,//JIntent使用
13 Androidapi.Helpers,//stringtojstring使用
14 IdHTTP;//TPath使用
15
16 type
17 TForm1 = class(TForm)
18 Label1: TLabel;
19 ProgressBar1: TProgressBar;
20 Label2: TLabel;
21 Button1: TButton;
22 IdHTTP1: TIdHTTP;
23 procedure Button1Click(Sender: TObject);
24 procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
25 AWorkCount: Int64);
26 procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
27 AWorkCountMax: Int64);
28 procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
29 private
30 { Private declarations }
31 isDown:Boolean;
32 function DownFilePath: string;
33 public
34 { Public declarations }
35 end;
36
37 const
38 FileName = 'test.apk';
39
40 var
41 Form1: TForm1;
42
43 implementation
44
45 {$R *.fmx}
46 {$R *.NmXhdpiPh.fmx ANDROID}
47
48 procedure TForm1.Button1Click(Sender: TObject);
49 var
50 sURLPath,sFilePath: string;
51 oFile: TFileStream;
52 begin
53 isDown := True;
54 sFilePath := DownFilePath + FileName;
55 if FileExists(sFilePath) then //判断以前文件是否存在
56 DeleteFile(sFilePath);
57
58 // sURLPath:= 'http://bcscdn.baidu.com/netdisk/BaiduYun_7.12.1.apk';//文件下载地址(用百度云测试了)
59 // 本来想用百度云的,我艹,不知道为什么百度云下载着,就提示“connection closed gracefully”
60 sURLPath:= 'http://m.down.sandai.net/MobileThunder/Android_5.15.2.3820/XLWXguanwang.apk';//文件下载地址(用百度云测试了)
61
62 oFile := TFileStream.Create(sFilePath, fmCreate); //文件下载后保存的路径
63 try
64 ProgressBar1.Value := 0;
65 IdHTTP1.Get(sURLPath, oFile);
66 except
67 end;
68 oFile.Free;
69 end;
70
71 function TForm1.DownFilePath: string;
72 begin
73 Result := TPath.GetDownloadsPath + PathDelim;
74 end;
75
76 procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
77 AWorkCount: Int64);
78 begin
79 ProgressBar1.Value := AWorkCount;
80 end;
81
82 procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
83 AWorkCountMax: Int64);
84 begin
85 ProgressBar1.Value := AWorkCountMax;
86 end;
87
88 procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
89 {$IFDEF ANDROID}
90 Var
91 oFile: Jfile;
92 oIntent: JIntent;
93 {$ENDIF}
94 begin
95 {$IFDEF ANDROID}
96 //下载完成后自动安装
97 if isDown then
98 begin
99 Try
100 oFile := TJfile.JavaClass.init(stringtojstring(DownFilePath), stringtojstring(FileName));
101 oIntent := TJIntent.Create;
102 oIntent.setAction(TJIntent.JavaClass.ACTION_VIEW);
103 oIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
104 oIntent.setDataAndType(TJnet_Uri.JavaClass.fromFile(oFile), StringToJString('application/vnd.android.package-archive'));
105 SharedActivityContext.startActivity(oIntent);
106 Except
107 End;
108 end;
109 {$ENDIF}
110 end;
111
112 end.
相关文章
- android 常用加密,分享一下Android各种类型的加密
- android进阶之了解Android系统与开机过程
- android sdk manager安装,Android SDK Manager安装过程
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- robotium android,Robotium 测试Android apk安装包
- android attrs获取_关于Android attrs 自定义属性的说明
- android计算器开发实例_安卓开发计算器代码
- Android 标签栏pagerslidingtabstrip用法实例(含Demo)
- 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库编码 WebP 图片 )
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 代理 Activity 组件开发 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- android 通话录音功能详解手机开发
- [android] 天气app布局练习(二)详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Android系统与Linux之间的联系(android和linux)
- android大图片拖拽并缩放实现原理
- Android图片处理实例介绍(图)
- Android系列之Intent传递对象的几种实例方法
- android的UDP编程实例
- Android听筒模式的具体实现实例
- android实现蓝牙文件发送的实例代码,支持多种机型
- Android获取其他包的Context实例代码
- Android中查看USB连接的外接设备信息的代码实例
- Android入门之Gallery+ImageSwitcher用法实例解析