Android實例-IdHTTP下載(並實現自動安裝)(XE10+小米2)


 

相關資料:

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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM