Я хочу установить стороннее приложение из файловой системы из моего приложения 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);
Этот код не работает на Android 10 из-за того, что ACTION_VIEW и ACTION_INSTALL_PACKAGE устарели в Android 10. Похоже, теперь нам нужно использоватьAPI PackageInstaller.
Я попытался написать метод, используя API PackageInstaller. К сожалению, это не работает.
Код с API PackageInstaller
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);
}
Исключение "Нераспознанный поток" возникает во время вызова.
Надеюсь, кто-нибудь сможет мне помочь.
Заранее большое спасибо.