我想从Xamarin Android应用中打开应用设置页面

时间:2017-01-25 10:44:37

标签: android android-activity xamarin

我需要打开我的Xamarin Android应用的应用设置页面。

使用Java,似乎正确的方法是:

startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
              Uri.parse("package:" + BuildConfig.APPLICATION_ID)));

所以,使用C#,我尝试了:

StartActivity(new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings,
              Android.Net.Uri.Parse("package:" + BuildConfig.ApplicationId)));

这没什么用...... 我试过没有Uri参数,在那种情况下我得到一个例外:

Android.Content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.APPLICATION_DETAILS_SETTINGS }

我也试过

StartActivityForResult(
    new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings), 0);

同样的例外......

有什么想法吗?

感谢。

4 个答案:

答案 0 :(得分:6)

我终于找到了问题!

StartActivity(new Intent(Android.Provider.Settings.ActionApplicationDetailsSettings,
          Android.Net.Uri.Parse("package:" + BuildConfig.ApplicationId)));

BuildConfig.ApplicationId

不起作用......

然后

使用Xamarin进行正确的调用(或者至少是对我有用的调用)
StartActivity(new Intent(
    Android.Provider.Settings.ActionApplicationDetailsSettings,
    Android.Net.Uri.Parse("package:"+ Android.App.Application.Context.PackageName)));

答案 1 :(得分:2)

通过Visual Studio和C#使用Xamarin,我也切换到Application.Context.PackageName

我一直在使用BuildConfig.ApplicationId查找Java示例,但在C#中,这导致我遇到了同样的问题。我们的目标是不同的,但我想确认你的语法让我更进一步。

using Android.App;
using Android.Net;
...
StartActivity(new Intent(
    Android.Provider.Settings.ActionApplicationDetailsSettings, 
    Uri.Parse("package:" + Application.Context.PackageName)));

答案 2 :(得分:0)

使用@Sylvain和@Mikish答案,

我有一个例外:

Android.Util.AndroidRuntimeException: 'Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.

因此略微修改了答案:

public void OpenSettings()
{
    Intent intent = new Intent(
                    Android.Provider.Settings.ActionApplicationDetailsSettings,
                    Android.Net.Uri.Parse("package:" + Application.Context.PackageName));
    intent.AddFlags(ActivityFlags.NewTask);

    Application.Context.StartActivity(intent);
}

答案 3 :(得分:0)

Xamarin.Essentials.AppInfo.ShowSettingsUI();似乎有效。