2012-10-09 41 views
1

我試圖從廣播開始一個服務,但由於某種原因,我的服務永遠不會被調用。 這是我的接收器:startService方法被調用,但沒有任何反應

private void initReceiver() { 
    receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals("telecom.IT.DigiCARE.REC")) { 
       Log.d("MainActivity", "Intent received from server!"); 

       byte[] data = intent.getByteArrayExtra("Data"); 
       String params = intent.getStringExtra("Params"); 

       Intent i = new Intent(MainActivity.this, DecodeService.class); 
       i.putExtra("Data", data); 
       i.putExtra("Params", params); 

       startService(i); 
      } 
     } 
    }; 

    registerReceiver(receiver, new IntentFilter("telecom.IT.DigiCARE.REC")); 
} 

這是我的服務:

public class DecodeService extends Service { 

@Override 
public void onStart(Intent intent, int startId) { 
    String params = intent.getStringExtra("Params"); 
    byte[] data = intent.getByteArrayExtra("Data"); 

    decodeMessage(params, data); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    String params = intent.getStringExtra("Params"); 
    byte[] data = intent.getByteArrayExtra("Data"); 

    decodeMessage(params, data); 
    return START_STICKY; 
} 
} 

我期待的錯誤是在某處的清單,但我沒有看到它。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.telecomIT.digicare" 
android:versionCode="1" 
android:versionName="1.0" > 

<services 
     android:name=".DecodeService" 
     android:enabled="true" /> 

這不是因爲廣播是不行的,因爲startService被調用,但後來什麼也沒有發生..

+0

你是什麼意思「沒什麼反應」?你期望發生什麼? – m0skit0

+0

我希望調用服務中的啓動方法,但這種情況不會發生。 –

+0

你的logcat看起來像什麼? –

回答

0

我想我找到了問題..我服務* 小號 *而不是服務。 奇怪的是,沒有產生皮棉錯誤或什麼。

0

您的聲明必須在聲明指定服務包的位置後聲明。試試看:

 <meta-data <!-- First --> 
       android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version" /> 
     <services <!-- Second --> 
       android:name=".DecodeService" 
       android:enabled="true" /> 
相關問題