• Delphi 安装apk


    procedure ToInstallApk(filename: string);
    var
       aFile: Jfile;
       Intent: JIntent;
    begin
          Try
              aFile := TJfile.JavaClass.init(stringtojstring(DownPath),stringtojstring(filename));
              Intent := TJIntent.Create;
              Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
              Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
              Intent.setDataAndType(TJnet_Uri.JavaClass.fromFile(aFile), stringtojstring('applicationnd.android.package-archive'));
              SharedActivityContext.startActivity(Intent);
          Except
          End;
    end;
    
    
    procedure ToInstallApk70(filename: string);
    var
      LFile: JFile;
      LIntent: JIntent;
      LNet_Uri: Jnet_Uri;
    begin
      if not TOSVersion.Check(7, 0) then
      begin
           ToInstallApk(filename);
           exit;
      end;
      LFile := TJFile.JavaClass.init(StringToJString(ExtractFilePath(DownPath)), StringToJstring(ExtractFileName(filename)));
      LIntent := TJIntent.Create;
      if TOSVersion.Check(8, 0) 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(7, 0) 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('applicationnd.android.package-archive'));
      TAndroidHelper.Context.startActivity(LIntent);
    end;
  • 相关阅读:
    C# 模式&模式匹配
    CentOS7下安装 dotnet sdk
    PLSQL 设置
    Visual Studio Code 开发 .NetCore 插件列表
    .net core 服务生命周期
    从 Asp.Net Core 2.2 迁移到 3.0 的方案
    CSRedisCore 介绍
    Entity Framework 命令
    DataAnnotations 模型配置
    依赖注入学习(理论)
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/11934682.html
Copyright © 2020-2023  润新知