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



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

我为此尝试了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方法

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中将Flags设置为FLAG_ACTIVITY_NEW_TASK。

但我仍然想知道是否有更好的解决方案使用作业调度器或工作管理器。感谢

最新更新