【发布时间】:2018-04-07 01:30:15
【问题描述】:
我正在尝试将我在 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);
}
}
那么正确的语法是什么?
【问题讨论】:
标签: c# android xamarin xamarin.android