Xamarin.Forms实现开机启动(Android平台)

最近开始研究了一下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 广播接收器可能会遇到困难。 如果是这种情况,请注意,这些限制不适用于前台服务,后者可以从广播接收方调用。

你可能感兴趣的:(c#,xamarin,visual,studio,android,.net)