在Android delphi西雅图应用程序错误中启动apk

时间:2016-04-15 08:06:46

标签: android delphi-10-seattle

由于多种原因,我不想使用Google Play机制来升级Android应用程序。所以我决定建立自己的系统来下载和升级Android应用程序。

第1步:下载更新.apk文件。

步骤2:在原始应用程序中放置一个按钮,以便用户可以单击它以启动.apk进行升级。

以下代码给我一个错误。

  procedure TfrmUpdateProgram.DoUpgrade;  
  {$IF DEFINED(IOS) or DEFINED(ANDROID)}
    var Intent : JIntent;
  {$ELSE}
  {$ENDIF}
  begin
    {$IF DEFINED(IOS) or DEFINED(ANDROID)}
      Intent := TJIntent.Create;
      Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
      Intent.setDataAndType(StrToJURI(newAPKFile), StringToJString('application/vnd.android.package-archive'));

      SharedActivityContext.startActivity(Intent);
      Application.Terminate;

    {$ELSE}
      ShellExecute(0, PWideChar('Open'), PWideChar(newAPKFile), nil, nil, SW_HIDE);
    {$ENDIF}
  end;
  

android.content.activitynotfoundexception:找不到处理意图的活动{act = android.intent.action.view dat = / storage ..... update.apk typ = application / vnd.android.package-archive flg = 0x1000000}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试删除对Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK)的调用,这不是严格需要的。

在启动.apk之前,请确保Intent文件是世界可读的,除非您将其存储到公共外部文件夹。并确保可以通过file: URI访问它。

并确保您的Android设备配置为允许从未知来源安装应用。