我正在用android studio编程。我想要使手机震动的程序。即使您没有打开该应用程序。因此应该在后台运行,我想我必须在Service中编写它。但这引发了异常。如何解决?
主要活动:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i= new Intent(MainActivity.this,Silent.class);
startService(i);
}
静默服务:
public class Silent extends Service {
public Silent() {
AudioManager myAudioManager;
myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
它抛出一个异常:
Silent.java.12上的java.lang.NullPointerException
它发生在这一行:
myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
最佳答案
我建议您将构造函数代码移到服务的onCreate()方法中,该方法将在创建服务后调用。最有可能的是,您试图在服务的生命周期中过早地获得音频管理器。您可以执行以下操作:
@Override
public void onCreate() {
AudioManager myAudioManager;
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}