安卓小白分享: 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 ; |
--------------------------------------------- |