2013-05-30 3 views
2

서비스와 통신하려고합니다. 이 번호는 Android Guide입니다.활동에서 서비스로 통신

나는 첫 번째 예에서 좋아했다하지만 난 오류가 :이 활동입니다

"java.lang.RuntimeException: Unable to bind to service [email protected] with Intent { cmp=com.example.internetcall/.MyService }: java.lang.NullPointerException: println needs a message".

:

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; 
    } 
} 

사람을합니까 이 문제에 대한 해결책을 알고 계십니까?

나는 약간의 문법 오류를 일으켰다. 유감 스럽지만 영어를 잘 모른다.

답변

2

Log.i("bnf",arg0.getStringExtra("number"));arg0.getStringExtra("number")에 예외가 발생합니다. 서비스 바인딩에 "number"라는 문자열을 전달하지 않았습니다.

+0

감사합니다. 이제 작동합니다! 그것은 항상 어리석은 오류입니다 :) – WellDone2094

관련 문제