gpt4 book ai didi

java - 找不到符号方法 getBaseContext()

转载 作者:行者123 更新时间:2023-12-01 22:44:06 24 4
gpt4 key购买 nike

我想实现一个音频管理器,但我不太清楚该把它放在哪个类中。如果我放在 onCreate 中,我无法引用它,但如果我把它放在我的 Broadcast Receiver 类中,它找不到 getBaseContext() 方法。在下面的代码中,它找不到 getBaseContext() 方法:

class SmsFilter extends BroadcastReceiver {
private final String TAG = "SMS";
public final AudioManager am = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null){
String action = intent.getAction();
if (action.equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle extras = intent.getExtras();
if (extras != null){
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
}
}

}

最佳答案

首先,您不太可能需要使用 getBaseContext() 方法。

其次,您从不尝试使用初始化程序中的Context

第三, list 注册的 BroadcastReceiver(以及大多数 SMS_RECEIVED 接收器在 list 中注册)仅用于一个 onReceive() 调用,因此让 AudioManager 作为类的数据成员,而不仅仅是 onReceive() 方法中的局部变量,是没有任何值(value)的。

您可以在传递到 onReceive()Context 上调用 getSystemService(),也许是在 if 中(extras != null) block 。

换句话说:

class SmsFilter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null){
String action = intent.getAction();

if (action.equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle extras = intent.getExtras();

if (extras != null){
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
}
}

关于java - 找不到符号方法 getBaseContext(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596063/

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