如何在Xamarin中使用SetAction

时间:2017-10-25 20:08:47

标签: c# android xamarin xamarin.android

我试图在Android 6.0或更高版本上将我的应用列入白名单。我已经看到Android代码可以执行此操作,但它在Xamarin中没有翻译,Xamarin文档只告诉您SetAction将字符串作为参数,然后链接到Android文档并不会最终成为同样的。

这是Xamarin不接受的Android代码

intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);

它不喜欢“设置”。我已经阅读了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);
        }

}

那么完成此任务的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

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);