gpt4 book ai didi

android - 在android中阻止来电

转载 作者:行者123 更新时间:2023-11-29 01:56:41 25 4
gpt4 key购买 nike

我想在我的 Android 应用程序中阻止/取消阻止来电。我可以使用下面的代码来做到这一点。

telephony = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
customPhoneListener = new PhoneCallStateListener(MainActivity.this, vSMS);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
telephony.listen(customPhoneListener,
PhoneStateListener.LISTEN_CALL_STATE);
Toast.makeText(MainActivity.this, "START", Toast.LENGTH_SHORT).show();
}
});

stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
telephony.listen(customPhoneListener,
PhoneStateListener.LISTEN_NONE);
Toast.makeText(MainActivity.this, "STOP", Toast.LENGTH_SHORT).show();
}
});
}

但问题是,当我点击开始按钮时,调用阻止服务已激活,然后我们转到主页,调用阻止仍处于激活模式。(没关系)。但是当我打开我的应用程序并按下停止按钮时,调用不会解除阻止。它仍然被阻止。为什么?我做错了什么?

最佳答案

您正在使用 Activity 上下文获取电话对象,我猜 customPhoneListener 在您的 Activity 中被定义为实例变量。

但是当您关闭 Activity(通过转到主屏幕)并再次打开它时,您有一个新的上下文,因此停止按钮几乎什么都不做。

要解决此问题,您可以尝试以下操作:

1- 用户应用上下文

telephony = (TelephonyManager)  getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);

2- 确保监听器对象 customPhoneListener 在您的应用程序的生命周期内是相同的而不是您的 Activity 。尝试让它成为static或者在application class

中定义它

关于android - 在android中阻止来电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com