Xamarin.forms 如何从xamarin表单打开应用程序隐私设置

Xamarin.forms 如何从xamarin表单打开应用程序隐私设置,xamarin.forms,cross-platform,Xamarin.forms,Cross Platform,正在尝试打开我的应用设置,以便用户可以查看我的应用所需的权限。 找不到任何类似的例子。 * *试试Device.OpenUri(新的Uri(“应用程序设置”) 如果这不起作用(我想这是很久以前的事了),您可能必须在特定于平台的部分中这样做,并使用例如依赖项服务。对于IOS,则使用UIApplication.SharedApplication.OpenUrl(新的NSUrl(“应用程序设置”) 编辑:@EvZ的答案是带有特定于平台的代码和抽象的,如果您还需要UWP,可以调用 等待Windows.S

正在尝试打开我的应用设置,以便用户可以查看我的应用所需的权限。 找不到任何类似的例子。 *

*

试试
Device.OpenUri(新的Uri(“应用程序设置”)

如果这不起作用(我想这是很久以前的事了),您可能必须在特定于平台的部分中这样做,并使用例如依赖项服务。对于IOS,则使用
UIApplication.SharedApplication.OpenUrl(新的NSUrl(“应用程序设置”)

编辑:@EvZ的答案是带有特定于平台的代码和抽象的,如果您还需要UWP,可以调用
等待Windows.System.Launcher.launchurisync(新Uri(“ms设置:隐私位置”)

相当简单,您必须创建特定于平台的实现

界面

public interface ISettingsHelper
{
    void OpenAppSettings();
}
public void OpenAppSettings()
{
    var url = new NSUrl($"app-settings:{app_bundle_id}");
    UIApplication.SharedApplication.OpenUrl(url);
}
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);
}
iOS

public interface ISettingsHelper
{
    void OpenAppSettings();
}
public void OpenAppSettings()
{
    var url = new NSUrl($"app-settings:{app_bundle_id}");
    UIApplication.SharedApplication.OpenUrl(url);
}
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);
}
安卓

public interface ISettingsHelper
{
    void OpenAppSettings();
}
public void OpenAppSettings()
{
    var url = new NSUrl($"app-settings:{app_bundle_id}");
    UIApplication.SharedApplication.OpenUrl(url);
}
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()


备注:请记住,如果您希望此解决方案在较旧的设备上运行,则需要对其进行调整。

您的解决方案在ios上运行良好,但在android上运行不好。我不知道是出于什么奇怪的原因,我以前是这样做的,它在两种平台上都适用。我也会尝试@EvZ解决方案。非常感谢你的帮助。谢谢你的回答,我现在就试试。快速问题如果我不想处理旧设备,我会显示一种警报吗?为了安全起见。为了安全起见,你可以用try-catch块把它包起来,然后采取相应的行动。该解决方案在Android 7.0和iOS 11.3上进行了测试。