如何在 Xamarin 中使用 SetAction

Bob*_*obh 2 c# android xamarin.android xamarin

我正在尝试在 Android 6.0 或更高版本上将我的应用列入白名单。我已经看到 Android 代码可以做到这一点,但它没有在 Xamarin 中进行翻译,Xamarin 文档只告诉您 SetAction 将一个字符串作为参数,然后是指向 Android 文档的链接,但最终结果并不相同。

这是 Xamarin 不接受的 Android 代码

intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
Run Code Online (Sandbox Code Playgroud)

它不喜欢设置。我已经阅读了 Xamarin 文档,它说 SetAction() 需要一个字符串 arg,这就是他们所说的所有内容,并将您指向 Android 文档。

注意,我在 javascript 接口类中调用它,我尝试了这个,但它不起作用

class MyJSInterface : Java.Lang.Object
    {
    Context context;
    public MyJSInterface(Context context)
        {
            this.context = context;
        }
    [Export]
    [JavascriptInterface]
    public void SetDozeOptimization()
        {
            Toast.MakeText(context, "launch optimization", ToastLength.Short).Show();

            setDozeComplete = false;
            Intent intent = new Intent();
            String packageName = context.PackageName;
            PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
            if (pm.IsIgnoringBatteryOptimizations(packageName))
                intent.SetAction("ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS");
            else
            {
                intent.SetAction("ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
                intent.SetData(Android.Net.Uri.Parse("package:" + packageName));
            }
            context.StartActivity(intent);
        }

}
Run Code Online (Sandbox Code Playgroud)

那么完成此操作的正确语法是什么?

Sus*_*ver 5

Android.Provider.Settings.ActionRequestIgnoreBatteryOptimizations:

  • android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

Android.Provider.Settings.ActionIgnoreBatteryOptimizationSettings:

  • android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS

例子:

intent.SetAction(Android.Provider.Settings.ActionRequestIgnoreBatteryOptimizations);
intent.SetAction(Android.Provider.Settings.ActionIgnoreBatteryOptimizationSettings);
Run Code Online (Sandbox Code Playgroud)