我创建了一个 xamarin 表单应用程序。我添加了一个广播接收器以在启动时自动启动应用程序。我重新启动了手机,应用程序自动正确启动,但大约 2 分钟后应用程序崩溃了。请注意,只有在开机自动启动的情况下,应用程序才会崩溃。
测试设备:Samsung Galaxy S8 (Android 9) 和部分安卓电视设备
以下已经尝试过的事情。
应用清单
<uses-sdk android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="false" />
<application android:label="ABC" android:icon="@drawable/icon" android:banner="@drawable/banner">
<receiver android:name=".MyCustomReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
</application>
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted }, Priority = (int)IntentFilterPriority.HighPriority)]
public class MyCustomReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if(Intent.ActionBootCompleted.Equals(intent.Action))
{
Intent actIntent = new Intent(context, typeof(MainActivity));
actIntent.AddFlags(ActivityFlags.NewTask);
context.StartActivity(actIntent);
}
}
}