我想要实现一个音频管理器,但是我无法弄清楚要把它放在哪个类中。如果我输入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);
}
}
}
}
}
答案 0 :(得分:3)
首先,您不太可能需要使用getBaseContext()
方法。
其次,您从不尝试使用初始化程序中的Context
。
第三,清单注册的BroadcastReceiver
- 和大多数SMS_RECEIVED
接收者在清单中注册 - 仅用于一次onReceive()
呼叫,因此没有任何价值AudioManager
是该类的数据成员,而不仅仅是onReceive()
方法中的局部变量。
您可以在传递到getSystemService()
的{{1}}上致电Context
,也许在onReceive()
区块内。
换句话说:
if (extras != null)