android - 即使应用程序在特定时间关闭,也可以打开电话拨号器
问题描述
即使我的应用程序已关闭,我也想在特定时间从我的应用程序打开 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 中将标志设置为 FLAG_ACTIVITY_NEW_TASK。
但我仍然想知道使用 Job Scheduler 或 Work Manager 是否有更好的解决方案。谢谢
推荐阅读
- python - 我对 python 非常陌生,正在尝试新的测试,以及为列中的一系列数据创建年龄段的最佳方法是什么
- c# - “IImageProcessingContext”不包含“ApplyScalingWaterMark”ImageSharp 的定义
- node.js - 错误:从本地 Nodejs 访问托管在 AWS RDS 上的 Postgresql 服务器时,角色“root”不存在
- amazon-web-services - 我正在学习创建 AWS Lambda。我想创建一个“链”:S3 -> 4 Chained Lambda()'s -> RDS。我无法让第一个 lambda 调用第二个
- c# - convert string to ByteArray C#
- sql - 物化视图中不支持 plsql 函数
- python - 我只是改变了我的 sqlite 表并通过我的控制台添加了一个列;如何将此命令添加到我的 Python 文件或迁移文件中?
- django - Django:如何在使用 ajax 之前添加 csrf 令牌
- git - 突然无法推送到 git 仓库
- node.js - 如何根据参考/模型填充字段?