Delphi開發Android程序自動在線升級安裝.(通過GetSharedDownloadsPath方法)

提示:本文來自Delphi盒子會員aknightchen分享:歡迎加入Delphi知識局QQ羣:32422310

安卓小白分享: Android程序自動在線升級安裝.(通過GetSharedDownloadsPath方法)

1>.修改AndroidManifest.template.xml ( 此文件在你DELPHI項目的目錄中,如找不到就文件查找吧)
   
   最好把此文件拖到DELPHI, 用DELPHI打開,(這樣,它會一行一行格式清楚)

   找到文字<%uses-permission%>  在它這一行後面, 新增一行:

   <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

   (必須加此行,不加就無法安裝, 我反覆試過了)
   
   加完後,要保存!!!

2>.上方菜單 Project-->Options-->Application-->Entitlement List-->
   -->(選擇你的平臺,最好選擇All Configurations-->Android platform (我只做android)-->Secure File Sharing
  
   如果你不勾, 在我手機上, 是顯示閃退....(我也反覆測試過了)

3>.下面是代碼部分. 至於你是如何把安裝包下載, 此過程略過....下面專講如何調用安裝的代碼.

1>.Button1.Text是"您已下載成功了,下面點擊我來調用升級吧"


uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,System.IOUtils,
  Androidapi.Jni.JavaTypes, Androidapi.Jni.Net,Androidapi.JNI.App,
  Androidapi.JNI.Support,System.Permissions, Androidapi.JNI.Os;


var
  myFile:string;

myFile:=TPath.GetSharedDownloadsPath+'/aaa.apk';    // 隨便找個formshow地方,給他賦值吧.

procedure TframeDownloadSetupFile.Button1Click(Sender: TObject);
begin
  //動態申請權限
  PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
          procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
          begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          { activate or deactivate the location sensor }
          mySetupApp   --調用安裝過程
          else
          begin
          ShortToast('由於您拒絕了權限申請,因此無法繼續!');
          end;
          end);

end;


procedure mySetupApp;
var
  Intent: JIntent;
begin
  Intent:=TJIntent.Create;
  Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);

  {$IF CompilerVersion>=33.0}
  Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
  Intent.SetDataAndType(TAndroidHelper.JFileToJURI(TJFile.JavaClass.init(StringToJString(sLocalDownloadFileName))),
    StringToJString('application/vnd.android.package-archive'));
  {$ELSE}
  Intent.SetDataAndType(TJnet_Uri.JavaClass.parse(StringToJString(url)),
    StringToJString('application/vnd.android.package-archive'));
  {$ENDIF}


  try
    TAndroidHelper.Activity.startActivity(Intent);
    //SharedActivity.startActivity(Intent);  新版DELPHI,建議用上一行的方法
    ShowMessage('成功調用了安裝程序,  但用戶在後續安裝過程中,有沒有點取消,就不知道了.');
  except
    on e: Exception do
    begin
      ShowMessage('在調用安裝過程中,出現異常錯誤, 具體錯誤信息如下:'+e.Message);
    end;
  end;

end;
---------------------------------------------

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章