2017-04-07 104 views
2

我有這樣的意圖:我如何獲得服務意向?

Intent serviceIntent = new Intent(getApplicationContext(), Servicio.class); 
serviceIntent.putExtra(MainActivity.EXTRA_BT_DEVICE, btDevice); 
getApplicationContext().startService(serviceIntent); 

但由於某些原因,在使用此代碼的服務:

btDevice = (BluetoothDevice) params.getExtras().get(MainActivity.EXTRA_BT_DEVICE); 
// btDevice = getParcelableExtra(EXTRA_BT_DEVICE) 

它說,其意圖是空的,但它是不是活動空。

回答

3

您需要將服務綁定到訪問服務方法的活動。使用服務對象,您可以調用服務方法並將活動中的值傳遞給服務。 在活動 -

Servicio mService; 

@Override 
protected void onResume() { 
    super.onResume(); 
    Intent bindIntent = new Intent(this, Servicio.class); 
    bindService(bindIntent, mServiceConnection, Context.BIND_AUTO_CREATE); 

} 
@Override 
protected void onPause() { 
    super.onPause(); 

    unbindService(mServiceConnection); 
    mService = null; 
} 

private ServiceConnection mServiceConnection = new ServiceConnection() { 
    public void onServiceConnected(ComponentName className, IBinder rawBinder) { 
     mService = ((Servicio.LocalBinder) rawBinder).getService(); 

    } 

    public void onServiceDisconnected(ComponentName classname) { 
     ////  mService.disconnect(mDevice); 
     mService = null; 
    } 
}; 

MSERVICE寫這樣的代碼是用這個你可以傳遞價值的服務爲您服務類的對象。

寫這個服務類

private final IBinder mBinder = new LocalBinder(); 
public class LocalBinder extends Binder { 
    public Servicio getService() { 
     return Servicio.this; 
    } 
} 

@Override 
public IBinder onBind(Intent intent) { 
    return mBinder; 
} 
+0

我不想送價值的服務,我只是想用這種方式,您可以發送您要包括BluetoothDevice類 –

+0

所有紅色,一些變量,我必須在之前創建庫? –

+0

一切是發送對象 –