java - 如何在 Java 中从 CallScreeningService 开始活动
问题描述
当传入的电话号码与某些号码匹配时,我正在尝试打开编写此 CallScreeningService 的应用程序。在这种情况下,onScreenCall 调用中的 if 语句运行但 Activity 未启动。我不知道为什么,我猜这是因为我没有正确的应用程序上下文。有谁知道我将如何获得正确的上下文或我在这里做错了什么?
public class CallScreenService extends CallScreeningService {
Context nContext = this;
@Override
public void onScreenCall(Call.Details callDetails) {
if (callDetails.getHandle().toString().equals("tel:333333333")) {
Intent i = new Intent(nContext, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
nContext.startActivity(i);
}
}
}
解决方案
该应用需要在 Android 10+ 上获得用户授予的 SYSTEM_ALERT_WINDOW 权限。
您必须将其添加到清单中:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
并向用户请求:
// Show alert dialog to the user saying a separate permission is needed
Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(myIntent);
推荐阅读
- kubernetes - busybox dns 解析在 kuberenetes 的某些节点中不起作用
- node.js - 如何以角度配置服务器以获取文件?
- excel - 返回日期和要操作的人员 (VBA) 的行中的最后一个值
- java - 无法检索远程 JWK 集:login.microsoftonline.com
- c# - 为什么 StreamReader 和 sr.BaseStream.Seek() 即使在 UTF8 编码中也会给出垃圾字符
- python - 拆分具有多个触发器的字符串
- html - 页面启动后,PWA html5 打开设备摄像头
- border - 在 SwiftUI 中将虚线边框应用于蒙版图像
- android - 如何从 Api 提高 recyclerview 的性能(列表渲染很慢)?
- c - Clion:使用与内置C函数同名的函数会导致冲突