Как открыть настройки конфиденциальности приложения из форм xamarin

Попытка открыть настройки моего приложения, чтобы пользователь мог увидеть, какие разрешения требуются моему приложению. не могу найти ничего с подобным примером. *

if (item.Name == "Privacy preferences")
            {
                switch (Device.RuntimePlatform)
                {
                    case Device.iOS:
                        Device.OpenUri(
                          new Uri(FORGOT WHAT TO PUT IN HERE .. APP/SETTINGS?);
                        break;
                    case Device.Android:
                        Device.OpenUri(
                          new Uri();
                        break;
                }

*

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 826
2

Ответы 2

Попробуйте Device.OpenUri(new Uri("app-settings:"));

Если это не сработает (я думаю, что это было давно), вам, вероятно, придется сделать это в частях вашей платформы и использовать, например, служба зависимости. Для IOS используйте UIApplication.SharedApplication.OpenUrl(new NSUrl("app-settings:"));

Обновлено: ответ @ EvZ - это тот, который содержит код для конкретной платформы и абстракцию, если вам также нужен UWP, вы можете вызвать await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-location"));

ваше решение хорошо работает на ios, но не на android. Не знаю, по какой-то странной причине, я делал это раньше, и раньше это работало для обеих платформ. Я также попробую решение @EvZ. Большое спасибо за помощь.

Pxaml 02.05.2018 17:48

Довольно просто, вам нужно будет создать реализации для конкретной платформы.

Интерфейс

public interface ISettingsHelper
{
    void OpenAppSettings();
}

iOS

public void OpenAppSettings()
{
    var url = new NSUrl($"app-settings:{app_bundle_id}");
    UIApplication.SharedApplication.OpenUrl(url);
}

Android

public void OpenAppSettings()
{
    var intent = new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings);
    intent.AddFlags(ActivityFlags.NewTask);
    var uri = Android.Net.Uri.FromParts("package", package_name, null);
    intent.SetData(uri);
    Application.Context.StartActivity(intent);
}

Из проекта Xamarin.Forms вы можете просто вызвать OpenAppSettings();.

P.S .: Имейте в виду, что это решение требует настройки, если вы хотите, чтобы оно работало на старых устройствах.

Спасибо за ответ, сейчас попробую. Быстрый вопрос, если я не хочу иметь дело со старыми устройствами, я просто покажу своего рода предупреждение? на всякий случай.

Pxaml 02.05.2018 17:51

Чтобы быть в безопасности, вы можете обернуть его блоками try catch и действовать соответственно. Это решение протестировано на Android 7.0 и iOS 11.3.

EvZ 02.05.2018 17:53

Другие вопросы по теме