Общаться с сервисом от деятельности

Я пытаюсь связаться с сервисом. Я нашел это руководство по Android.

Я сделал как в первом примере, но у меня есть ошибка:

msgstr "java.lang.RuntimeException: невозможно привязать к сервису com.example.internetcall.MyService@41763970 с намерением { cmp=com.example.internetcall/.MyService }: java.lang.NullPointerException: println требуется сообщение".

Это деятельность:

public class StartService extends Activity{

String telephoneNumber;
TextView statusTextView, numberTextView;
MyService myService;
Boolean myBound;

ServiceConnection mConnection = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName arg0, IBinder arg1) {
        Log.i("bnf","qui");
        LocalBinder binder = (LocalBinder) arg1;
        myService = binder.getService();
        myBound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        myBound = false;
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.start_service_layout);

    statusTextView = (TextView) this.findViewById(R.id.statusTextView);
    numberTextView = (TextView) this.findViewById(R.id.numberTextView);

    Intent i = this.getIntent();
    telephoneNumber = i.getStringExtra("number");

    numberTextView.setText(telephoneNumber);

    if(isMyServiceRunning()){
        statusTextView.setText("Online");
        statusTextView.setTextColor(Color.GREEN);
    }else{
        statusTextView.setText("Offline");
        statusTextView.setTextColor(Color.RED);
    }

    Intent intent = new Intent(this, MyService.class);
    bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

    //SupportClass.myService.setNumber(telephoneNumber);

}

private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if ("com.example.internetcall.MyService".equals(service.service.getClassName().toString())) {
             return true;
        }
    }
    return false;
}



}

и это MyService:

public class MyService extends Service{

MyWebSocket mws;
private final IBinder mBinder = new LocalBinder();
Boolean onCall;
String telephoneNumber;
String myTelephoneNumber = null;

@Override
public IBinder onBind(Intent arg0) {
    Log.i("bnf",arg0.getStringExtra("number"));
    return mBinder;
}

public class LocalBinder extends Binder {
    MyService getService() {
        Log.i("bnf","localbinder");
        // Return this instance of LocalService so clients can call public methods
        return MyService.this;
    }
}

Кто-нибудь знает решение этой проблемы?

если я сделал какую-то грамматическую ошибку, извините, но я не очень хорошо знаю английский.

1 ответ

Решение

Ваше исключение происходит в Log.i("bnf",arg0.getStringExtra("number"));arg0.getStringExtra("number") нулевой. Вы не передали строку "число" в своем намерении связать сервис.

Другие вопросы по тегам