最近开始研究了一下Xamarin.Forms,发现这个东西很有意思,对于.net程序员还是很方便,但是想搞明白最好还是要有一些原生开发的底子,比如AndroidStudio,这样更容易理解。
进入正题,关于Xamarin.Forms实现开机启动,网上搜了一下,都不够保姆级,这里详细写一下(这里要区分一下Xamarin.Forms和Xamarin.Android这是不一样的,关于Xamarin.Android实现开机启动网上有很多,方法跟原生差不多):
第一步:
新建一个Xamarin.Forms工程:Demo,你的解决方案里会出现两个工程分别是Demo和Demo.Android
第二步:
在Demo.Android上点右键->添加->新建项->广播接收器
这样就添加了一个Receiver,把它改名叫BootReceiver.cs
第三步:
BootReceiver.cs里面的代码如下
[BroadcastReceiver]
[IntentFilter(new[] { Android.Content.Intent.ActionBootCompleted,Android.Content.Intent.CategoryLauncher })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Intent toIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
context.StartActivity(toIntent);
}
}
第四步:
在Demo.Android上点右键->属性->Android清单
下面所需权限里把 RECEIVE BOOT COMPLETED 勾上
完成!
这里面其实就一个坑,Xamarin.Forms里AndroidManifest.xml不能手动修改,要通过上面的方法去生成。
备注
在 Android 8.0 (API 26 及更高版本中) ,Google 对应用可以执行的操作 施加限制 ,而用户不会直接与其交互。 这些限制会影响后台服务和隐式广播接收器(如) Android.Content.Intent.ActionBootCompleted
。 由于这些限制,在较新版本的 Android 上注册 Boot Completed
广播接收器可能会遇到困难。 如果是这种情况,请注意,这些限制不适用于前台服务,后者可以从广播接收方调用。