procedure _InstallApk(Apk: string);
var
LFile: JFile;
LIntent: JIntent;
begin
LFile := TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk)));
LIntent := TJIntent.Create;
LIntent.setAction(TJIntent.JavaClass.ACTION_VIEW);
LIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
LIntent.setDataAndType(TJnet_Uri.JavaClass.fromFile(LFile), StringToJString('application/vnd.android.package-archive'));
TAndroidHelper.Context.startActivity(LIntent);
end;
procedure InstallApk(Apk: string);
var
LFile: JFile;
LIntent: JIntent;
LNet_Uri: Jnet_Uri;
begin
if not TOSVersion.Check(, ) then
begin
_InstallApk(Apk);
Exit;
end;
LFile := TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk)));
LIntent := TJIntent.Create;
if TOSVersion.Check(, ) then
LIntent.setAction(TJIntent.JavaClass.ACTION_INSTALL_PACKAGE)
else
LIntent.setAction(TJIntent.JavaClass.ACTION_VIEW);
LIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
if TOSVersion.Check(, ) then
begin
// fix: android.os.FileUriExposedException: exposed beyond app through Intent.getData()
// Project -> Options -> Application -> Entitlement List -> Secure File Sharing -> Check it
LIntent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
LNet_Uri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context,
StringToJString(JStringToString(TAndroidHelper.Context.getPackageName) + '.fileprovider'), LFile);
end
else
LNet_Uri := TJnet_Uri.JavaClass.fromFile(LFile);
LIntent.setDataAndType(LNet_Uri, StringToJString('application/vnd.android.package-archive'));
TAndroidHelper.Context.startActivity(LIntent);
end;

Android 8.0以上要在manifest里加权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

感谢codecoolie,FFmpeg for Delphi http://www.CCAVC.com http://www.DelphiFFmpeg.com的作者,有机会去支持一下!

原文地址:http://bbs.2ccc.com/topic.asp?topicid=568834

安卓App自动升级的更多相关文章

  1. 安卓APP在线升级

    安卓APP在线升级 通过IDHTTP组件在线下载APP到手机中,然后自动安装这个APP程序. 1)在线下载APP程序 需引用单元: {$IFDEF ANDROID} FMX.Helpers.Andro ...

  2. uniapp 证书 打包上线GooglePlay app自动升级

    uniapp Android证书 打包上线GooglePlay app自动升级 1.Android证书申请 要安装jdk并配置环境变量. keytool -genkey -alias android ...

  3. 安卓---app自动更新

    主要参考:http://blog.csdn.net/jdsjlzx/article/details/46356013/ 效果如下: 大致思路:[原文] 首先,我们要有一个可以被手机访问的后台. 这里有 ...

  4. Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装

    Android App 升级执行流程 1.获取本地版本号 2.请求服务器获取服务器版本号 3.本地版本和服务器版本不一致提示升级,弹窗提示用户是否更新 4.用户确定升级,调用文件传输方法下载 apk ...

  5. hbuilder 开发app 自动升级

    使用huilder 开发app  ,实现app升级功能 1. var wgtVer = null; //用于获取系统当前版本 var currentversion = null; //用于获取系统最新 ...

  6. Phonegap 安卓的自动升级与更新。当版本为4.0的时候

    清单文件中: <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/> ...

  7. Ionic实战 自动升级APP(Android版)

    Ionic 框架介绍 Ionic是一个基于Angularjs.可以使用HTML5构建混合移动应用的用户界面框架,它自称为是"本地与HTML5的结合".该框架提供了很多基本的移动用户 ...

  8. ionic 实现自动升级APP

    最近做移动商城开发,需要一个自动升级APP的功能,在网上搜罗很多,发现有的是下载APK,有的在我这服务无法实现,由于时间原因,都被PASS了,最后找到了一个热更新插件,经过半天的调试,可以使用,很欣喜 ...

  9. web app升级—带进度条的App自动更新

    带进度条的App自动更新,效果如下图所示:   技术:vue.vant-ui.5+ 封装独立组件AppProgress.vue: <template> <div> <va ...

随机推荐

  1. uni-app 保持登录状态 (Vuex)

    在小程序中,保持登录状态是很常见的需求,今天就把写一写使用uni-app框架的保持登录状态功能是怎样实现的. 一.场景需求 1.场景:初始打开---登陆---关闭,再次打开---(已登录)上次关闭前的 ...

  2. Json_DataMember签名作用

    [DataContract] public class ApiResponse { [DataMember] public string Time { get; set; } } 序列化和反序列,如果 ...

  3. 阿里云服务出现TCP连接快速增加尤其是NON_ESTABLISHED大量增加导致内存和CPU暴增系统无法使用的问题

    TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放.网络服务器程序要同时管理大 ...

  4. 使用Android Studio时你应该知道的一切配置和使用Genymotion模拟器运行程序

    参考博客: 配置Android Studio: http://www.cnblogs.com/wi100sh/p/5653427.html Android Studio打包APK: http://bl ...

  5. Nginx-windows

    1.下载 http://nginx.org/ 选择最新稳定版本,例如nginx-1.15.5 mainline version has been released. 点击后,跳转页面,选择Stable ...

  6. App唤起微信小程序和回调

    在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转. 可在“管理中心-移动应用-应用详情-关联小程序信息”,为通过审核的 ...

  7. 【amad】cookiecutter -- 一个命令行工具,使用项目模版来构建项目

    动机 简介 个人评分 动机 一般的框架都有脚手架工具,但是并不会让所有人满意. 简介 cookiecutter1是一个Python实现的命令行工具,可以通过项目模版来构建项目. 它的特性包括: 跨平台 ...

  8. Oracle导出包含clob字段的sql脚本工具

    之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. ...

  9. poj1947(树上分组背包)

    题目链接:https://vjudge.net/problem/POJ-1947 题意:给定一棵树,求得到一个结点数为p最少删多少条边. 思路: 明显的树形dp,分组背包.用dp[u][j]表示在结点 ...

  10. [转帖]redis监控工具汇总

    redis监控工具汇总 https://www.cnblogs.com/felixzh/p/11170143.html redis-stat redis-stat是一个比较有名的redis指标可视化的 ...