打开 phone 拨号器,即使应用程序在特定时间关闭

open phone dialer even if app is closed on specific time

我想在特定时间从我的应用程序打开 android phone 拨号器,即使我的应用程序已关闭。

我为此尝试了 AlarmManager -

                AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
                Intent intent = new Intent(this, CallSchaduleBroadcast.class);
                intent.putExtra("PHONE_NUMBER", edtPhone.getText().toString());
                PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
                alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, timeInMillis, pendingIntent);

这是我在 CallSchaduleBroadcast 中的 onReceive 方法 class-

            String number = intent.getStringExtra("PHONE_NUMBER");
            Intent callIntent = new Intent(Intent.ACTION_DIAL);
            callIntent.setData(Uri.parse("tel:" + number));
            context.startActivity(callIntent);

但这给了我以下错误-

Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

我正在使用-

构建我的应用程序
    minSdkVersion 21
    targetSdkVersion 29

这是完成工作的正确方法吗?还是我需要尝试其他方法,例如 Job Scheduler 或 Work Manager。 请帮助我,提前致谢

我的错,我得到了解决方案

                String number = intent.getStringExtra("PHONE_NUMBER");
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                callIntent.setData(Uri.parse("tel:" + number));
                context.startActivity(callIntent);

我只需要在 callIntent 中将 setFlags 设置为 FLAG_ACTIVITY_NEW_TASK。

但我仍然想知道是否有使用 Job Scheduler 或 Work Manager 的更好的解决方案。谢谢