我想从我的xamarin android应用程序的文件系统中安装一个第三方应用程序。我在Android 10之前成功使用的代码非常简单明了。
Intent intent = new Intent(Intent.ActionView); Uri data = Uri.FromFile(file); intent.SetDataAndType(data, "application/vnd.android.package-archive"); context.StartActivity(intent);
由于ACTION_VIEW和ACTION_INSTALL_PACKAGE在Android 10中已弃用,因此该代码在Android 10上不起作用。看来我们现在需要使用PackageInstaller API。
我试图使用PackageInstaller API编写方法。不幸的是,它不起作用。
使用PackageInstaller API进行编码
public static void InstallPackageAndroidQAndAbove(Context context, string filePath, string packageName) { var packageInstaller = context.PackageManager.PackageInstaller; var sessiOnParams= new PackageInstaller.SessionParams(PackageInstallMode.FullInstall); sessionParams.SetAppPackageName(packageName); int sessiOnId= packageInstaller.CreateSession(sessionParams); var session = packageInstaller.OpenSession(sessionId); var input = new FileStream(filePath, FileMode.Open, FileAccess.Read); var output = session.OpenWrite(packageName, 0, -1); input.CopyTo(output); output.Close(); input.Close(); input.Dispose(); session.Fsync(output); var pendingIntent = PendingIntent.GetBroadcast(context, sessionId, new Intent(Intent.ActionInstallPackage), 0); session.Commit(pendingIntent.IntentSender); }
呼叫期间发生异常“无法识别的流”。
我希望有一个人可以帮助我。
提前非常感谢您。