找不到符号方法getBaseContext()

时间:2014-08-31 20:34:18

标签: java android

我想要实现一个音频管理器,但是我无法弄清楚要把它放在哪个类中。如果我输入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);
            }
        }
    }
}

}

1 个答案:

答案 0 :(得分:3)

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

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

第三,清单注册的BroadcastReceiver - 和大多数SMS_RECEIVED接收者在清单中注册 - 仅用于一次onReceive()呼叫,因此没有任何价值AudioManager是该类的数据成员,而不仅仅是onReceive()方法中的局部变量。

您可以在传递到getSystemService()的{​​{1}}上致电Context,也许在onReceive()区块内。

换句话说:

if (extras != null)