【发布时间】:2016-08-07 02:23:29
【问题描述】:
出于多种原因,我不想使用 Google Play 机制来升级 android 应用程序。所以我决定自己做一个系统来下载和升级一个android应用程序。
第一步:下载更新.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}
有什么想法吗?
【问题讨论】:
-
Intent 是 Android 独有的功能,它们在 iOS 中不存在,因此当
DEFINED(IOS)为真时,您将不得不使用不同的代码。