午前 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 にログインしていました。しかし、何ヶ月もの間、私は自分の携帯電話の設定または何かを変更したに違いありません. そして、ロック画面を下にスワイプするのを待ちます。なぜなら、午前 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);
助けてくれてありがとう!