英文:
How to start activity from CallScreeningService in Java
问题
我正在尝试使包含此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);
}
}
}
英文:
I'm trying to make the application that this CallScreeningService is written in open when the incoming phone number matches certain numbers. In this case the if statement in onScreenCall calls runs but the Activity isn't started. I'm not sure why, I'm guessing it's because I don't have the right context of the application. Does anyone know how I would get the correct context or what i'm doing wrong here?
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);
}
}
}
答案1
得分: 1
应用程序需要在Android 10+上由用户授予SYSTEM_ALERT_WINDOW权限。
您需要将其添加到清单中:
并向用户请求:
// 向用户显示警告对话框,说明需要另外的权限
Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(myIntent);
英文:
The app needs to have granted SYSTEM_ALERT_WINDOW permission by the user on Android 10+.
You have to add it in manifest:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
And to request it from user:
// Show alert dialog to the user saying a separate permission is needed
Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(myIntent);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论