当我自己的软件包安装/更新时,我试图进行BootReceiver调用,但我似乎无法找到如何检查被调用的原因是因为代码所在的软件包,还是其他已更新的应用程序。 这样的事情是否已经存在,如果存在,如何使用它?
以下是代码:
[BroadcastReceiver(Enabled = true, Exported = true, DirectBootAware = true)]
[IntentFilter(new string[] { Intent.ActionBootCompleted, Intent.ActionLockedBootCompleted, Intent.ActionPackageReplaced, "android.intent.action.QUICKBOOT_POWERON", "com.htc.intent.action.QUICKBOOT_POWERON" })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Intent timedIntent = new Intent(context, typeof(ITM.NotificationService));
//add missed traffic before program started with boot
if(intent.Action.Equals(Intent.ActionBootCompleted) || intent.Action.Equals(Intent.ActionLockedBootCompleted))
{
timedIntent.PutExtra("aDownBootup", TrafficStats.TotalRxBytes);
timedIntent.PutExtra("aUpBootup", TrafficStats.TotalTxBytes);
}
if (ITM.NotificationService.isStarted == false)
{
Application.Context.StartService(timedIntent);
}
}
}
答案 0 :(得分:0)
感谢@android开发人员answer。
您可以使用ACTION_MY_PACKAGE_REPLACED操作:
您的应用程序的新版本已安装在现有版本上。这仅发送到已替换的应用程序。它不包含任何其他数据;要接收它,只需使用一个意图过滤器来执行此操作。