大家好,StackOverflow的用户们:
我有一个在Play Store之外的Android应用程序。它通过下载新的APK并使用Intent调用安装程序对话框来更新自己。然而,在Android 10上,更新功能已经失效了。
现在我需要在Android 10上使用PackageInstaller API,但我无法让它正常工作。我的应用程序不是设备或配置文件所有者,但我不想进行静默安装,所以我认为这应该没问题。
我的问题是,一旦我提交会话,就没有任何反应了。
PackageInstaller installer = activity.PackageManager.PackageInstaller;
PackageInstaller.SessionParams sessionParams = new PackageInstaller.SessionParams(PackageInstallMode.FullInstall);
int sessionId = installer.CreateSession(sessionParams);
PackageInstaller.Session session = installer.OpenSession(sessionId);
var input = new FileStream(pfad, FileMode.Open, FileAccess.Read);
var packageInSession = session.OpenWrite("package", 0, -1);
input.CopyTo(packageInSession);
packageInSession.Close();
input.Close();
//That this is necessary could be a Xamarin bug.
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
Intent intent = new Intent(activity, activity.Class);
intent.SetAction("com.example.android.apis.content.SESSION_API_PACKAGE_INSTALLED");
PendingIntent pendingIntent = PendingIntent.GetActivity(activity, 0, intent, 0);
IntentSender statusReceiver = pendingIntent.IntentSender;
// Commit the session (this will start the installation workflow).
session.Commit(statusReceiver);
我查看了DDMS,但没有发现相关信息。一个可能有用的提示是,当我
Dispose()
流时,会出现IOException:write failed (EBADF) bad file descriptor
,这表明APK有问题。但我怀疑不是这个原因,因为我可以使用文件管理器无障碍地安装APK。谷歌搜索错误也没有帮助。
我该如何解决这个问题?