@ WendyZang очень любезно предоставил ответ на оригинальный вопрос, который заключается в том, что вы, к сожалению, не можете запустить приложение настроек Android (не говоря уже о настройке параметров специально для вашего собственного приложения) с помощью средства запуска Xamarin.Essentials .
Вместо этого вы должны использовать службу зависимостей с реализациями платформы c. Чтобы помочь другим, кто сталкивается с такой же проблемой, я хотел добавить полное решение по настройке службы зависимостей как на iOS, так и на Android, которая перемещается не только в приложение настроек ОС, но и конкретно в настройки вашего приложения:
В вашем кроссплатформенном проекте интерфейс может выглядеть примерно так: Вам нужно будет указать идентификатор пакета вашего приложения (например, com.myCompany.myApp
):
namespace MyCoolMobileApp.Services.DependencyServices
{
public interface ISettingsAppLauncher
{
void LaunchSettingsApp(string appBundleId);
}
}
В Android ваша реализация может выглядеть следующим образом (обратите внимание, что я использую James Плагин MonteAgno CurrentActivity ):
using System.Diagnostics;
using Android.Content;
using Plugin.CurrentActivity; // https://github.com/jamesmontemagno/CurrentActivityPlugin
using MyCoolMobileApp.Droid.Services.DependencyServices;
using MyCoolMobileApp.Services.DependencyServices;
using Xamarin.Forms;
[assembly: Dependency(typeof(SettingsAppLauncher_Android))]
namespace MyCoolMobileApp.Droid.Services.DependencyServices
{
public class SettingsAppLauncher_Android : ISettingsAppLauncher
{
public void LaunchSettingsApp(string appBundleId)
{
var intent = new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings);
intent.AddFlags(ActivityFlags.NewTask);
var uri = Android.Net.Uri.FromParts("package", appBundleId, null);
intent.SetData(uri);
CrossCurrentActivity.Current.AppContext.StartActivity(intent);
}
}
}
И, наконец, реализация iOS будет иметь следующий вид:
using System.Diagnostics;
using Foundation;
using MyCoolMobileApp.iOS.Services.DependencyServices;
using MyCoolMobileApp.Services.DependencyServices;
using UIKit;
using Xamarin.Forms;
[assembly: Dependency(typeof(SettingsAppLauncher_iOS))]
namespace MyCoolMobileApp.iOS.Services.DependencyServices
{
public class SettingsAppLauncher_iOS : ISettingsAppLauncher
{
public void LaunchSettingsApp(string appBundleId)
{
var url = new NSUrl($"app-settings:{appBundleId}");
UIApplication.SharedApplication.OpenUrl(url);
}
}
}