提示:本文來自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;
---------------------------------------------