打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
安卓小白分享: Android程序自动在线升级安装
作者:
(.)★☆☆☆☆-
盒子活跃会员
2020/3/8 12:02:09
标题:安卓小白分享: Android程序自动在线升级安装.(通过GetSharedDownloadsPath方法)浏览:268
加入我的收藏
楼主:安卓小白分享: 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;
----------------------------------------------
...
作者:
(.)★☆☆☆☆-
盒子活跃会员
2020/3/8 12:05:13
1楼:代码都是网上复制拼凑的, 本人只是反复测试而已, 有更好的调用安装方法, 欢迎大家告诉.
----------------------------------------------
...
作者:
(.)★☆☆☆☆-
盒子活跃会员
2020/3/8 12:08:05
2楼:本人测试机子: 中兴 Blade A7s
android 9.0
xe 10.3.1
----------------------------------------------
...
作者:
(.)★☆☆☆☆-
盒子活跃会员
2020/3/8 12:14:54
3楼:一开始,我放到其它的目录中, 不支持!!!!!!!!
最后,才想到用这个: GetSharedDownloadsPath
----------------------------------------------
...
作者:
(乌羽玉)★☆☆☆☆-
普通会员
2020/3/8 13:48:46
4楼:感谢分享
----------------------------------------------
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
XE5开发Android程序调用电话相关功能(短信息和电话)
Delphi 10中实现Android的广播接收器
Delphi XE5 android openurl(转)
delphi android 录像(调用Java的功能)
C++ Builder XE7 调用JAVA的JAR文件
wifi使用的相关流程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服