我已经在我的Xamarin Forms Android应用程序中添加了功能,让它在设备(重新)启动时重新启动。这工作正常(应用程序重新启动)。
这是我的BroadcastReceiver的代码:
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action == Intent.ActionBootCompleted)
{
Intent newTaskIntent = new Intent(context, typeof(MainActivity));
newTaskIntent.AddFlags(ActivityFlags.NewTask);
newTaskIntent.AddFlags(ActivityFlags.FromBackground);
context.StartActivity(newTaskIntent);
}
}
}
正如您所看到的,我添加了FromBackground标记,表示该应用程序不是由用户启动的,而是来自后台进程。
我想要实现的是,当应用程序未由用户启动时,应该使用此代码(在MainActivity的OnCreate事件中)将其推回并显示主屏幕:
this.MoveTaskToBack(true);
如何检查应用程序是否未由用户启动,而是由BroadcastReceiver代码启动?
注意:请注意,这是一个带有用户界面的“普通”用户应用,所以它不是真正的服务。作为Google的开发人员文档状态(https://developer.android.com/guide/components/services),不建议将其作为服务启动,因为它将在主线程中运行。我的应用应该使用单独的线程。
答案 0 :(得分:0)
在您的意图中添加一些额外的值。您可以从活动中读取的某种旗帜。然后将该标志进一步传递到Xamarin.Forms.App中。然后,您可以检查该标志,看看该接收器是否启动了该应用程序。
这里有一些代码与您想要完成的代码类似https://stackoverflow.com/a/44964328/1341538