强制活动即使手机被锁定也会启动BroadcastReceiver

时间:2013-03-13 16:46:19

标签: java android android-intent android-activity broadcastreceiver

上午7:51,我的手机执行此代码启动Skype(我已将Skype设置为自动登录,因此它基本上会在7:51 AM将我登录到Skype):

public class MorningReceiver extends BroadcastReceiver { 
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("MorningReceiver", "Entered");

        PackageManager packageManager = context.getPackageManager();
        Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
        context.startActivity(skype);
    }
}

这曾经100%的时间都在工作。我会睡觉,我的电话会在每天早上7:51登录Skype。然而,几个月来我必须更改手机中的设置或其他内容,现在似乎冻结了“context.startActivity(skype);”然后等我向我的锁屏滑动,因为现在如果我在上午10点醒来,抓住我的手机并向下滑动锁定屏幕,Skype立即启动并登录我 - 它还没有启动并记录在上午7:51,我想要它。

我想知道是否有办法强制启动活动,因此它不必等待任何用户交互,并在我睡觉时将手机锁在我身边时启动应用程序。

仅供参考:我的手机上没有密码。

另外,如果需要,这就是我发送广播的方式(MorningReceiver扩展BroadcastReceiver)

//set a Calendar object to 7:51 AM (not shown here)
//use an alarm manager to trigger the 7:51 AM event
AlarmManager am = (AlarmManager) this.getApplicationContext().getSystemService(Context.ALARM_SERVICE);

//send the broadcast
PendingIntent pi = PendingIntent.getBroadcast(this.getApplicationContext(), 0, new Intent(this.getApplicationContext(), MorningReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);

//repeat this every day
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

感谢您的帮助!

0 个答案:

没有答案