1

早上 7 点 51 分,我的手机执行此代码以启动 Skype(我将 Skype 设置为自动登录,所以它实际上是在早上 7 点 51 分让我登录到 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:00 醒来,拿起我的手机并向下滑动锁定屏幕,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);

谢谢你的帮助!

4

0 回答 0