Unable to start Service Intent

AndroidServiceAndroid IntentIntentfilter

Android Problem Overview


I have a service class. I have exported this class to jar and I have embed the jar in my client app.

When needed, I call the service class. When I try to do this, I get the following error:

Unable to start service Intent {comp={com.sample.service/com.sample.service.serviceClass}} : not found

I have other class apart from the service class, which I am able to access (create object of that class) which are inside the same jar.

I feel I have missed out some thing in my configuration or manifest or so.

Please help me identifying the same. My code is below:

public void onCreate(Bundle savedInstanceState) {    
      super.onCreate(savedInstanceState);  
      Intent intent = new Intent () ;  
      intent.setClassName("com.sample.service" ,"com.sample.service.serviceClass") ;  
      this.startService(intent) ; // when I call this line I get the message...  
      // binding other process continue  here   
}

Client manifest.xml

<service android:name="com.sample.service.serviceClass"  
            android:exported="true" android:label="@string/app_name" 
            android:process=":remote">
   <intent-filter><action android:name="com.sample.service.serviceClass"></action>
   </intent-filter>
</service>

Thanks in advance,
Vinay

Android Solutions


Solution 1 - Android

For anyone else coming across this thread I had this issue and was pulling my hair out. I had the service declaration OUTSIDE of the '< application>' end tag DUH!

RIGHT:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  ...>
...
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity ...>
        ...
    </activity>    

    <service android:name=".Service"/>
    
    <receiver android:name=".Receiver">
    	<intent-filter>
			...
    	</intent-filter>
    </receiver>        
</application>

<uses-permission android:name="..." />

WRONG but still compiles without errors:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  ...>
...
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity ...>
        ...
    </activity>

</application>

    <service android:name=".Service"/>
    
    <receiver android:name=".Receiver">
    	<intent-filter>
			...
    	</intent-filter>
    </receiver>        

<uses-permission android:name="..." />

Solution 2 - Android

First, you do not need android:process=":remote", so please remove it, since all it will do is take up extra RAM for no benefit.

Second, since the <service> element contains an action string, use it:

public void onCreate(Bundle savedInstanceState) {    
      super.onCreate(savedInstanceState);  
      Intent intent=new Intent("com.sample.service.serviceClass");  
      this.startService(intent);
}

Solution 3 - Android

  1. check if service declaration in manifest is nested in application tag

  2. check if your service.java is in the same package or diff package as the activity

<application>
    <!-- service.java exists in same package -->
    <service android:name=".service" /> 
</application>

Solution 4 - Android

I hope I can help someone with this info as well: I moved my service class into another package and I fixed the references. The project was perfectly fine, BUT the service class could not be found by the activity.

By watching the log in logcat I noticed the warning about the issue: the activity could not find the service class, but the funny thing was that the package was incorrect, it contained a "/" char. The compiler was looking for

> com.something./service.MyService

instead of

> com.something.service.MyService

I moved the service class out from the package and back in and everything worked just fine.

Solution 5 - Android

I've found the same problem. I lost almost a day trying to start a service from OnClickListener method - outside the onCreate and after 1 day, I still failed!!!! Very frustrating! I was looking at the sample example RemoteServiceController. Theirs works, but my implementation does not work!

The only way that was working for me, was from inside onCreate method. None of the other variants worked and believe me I've tried them all.

Conclusion:

  • If you put your service class in different package than the mainActivity, I'll get all kind of errors

  • Also the one "/" couldn't find path to the service, tried starting with Intent(package,className) and nothing , also other type of Intent starting

  • I moved the service class in the same package of the activity Final form that works

  • Hopefully this helps someone by defining the listerners onClick inside the onCreate method like this:

      public void onCreate() {
      //some code......
          Button btnStartSrv  = (Button)findViewById(R.id.btnStartService);
          Button btnStopSrv  = (Button)findViewById(R.id.btnStopService);
    
          btnStartSrv.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
          		startService(new Intent("RM_SRV_AIDL"));
          	}
          });
    
          btnStopSrv.setOnClickListener(new OnClickListener() {
      		public void onClick(View v) {
      			stopService(new Intent("RM_SRV_AIDL"));
      		}
          });
    
      } // end onCreate
    

Also very important for the Manifest file, be sure that service is child of application:

<application ... >
    <activity ... >
     ...
    </activity>
    <service
	    android:name="com.mainActivity.MyRemoteGPSService"
	    android:label="GPSService"
	    android:process=":remote">

        <intent-filter>
             <action android:name="RM_SRV_AIDL" />
        </intent-filter>
	</service>
</application>

Solution 6 - Android

In my case the 1 MB maximum cap for data transport by Intent. I'll just use Cache or Storage.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVinay View Question on Stackoverflow
Solution 1 - AndroidBlundellView Answer on Stackoverflow
Solution 2 - AndroidCommonsWareView Answer on Stackoverflow
Solution 3 - AndroidJianhongView Answer on Stackoverflow
Solution 4 - AndroidsataniccrowView Answer on Stackoverflow
Solution 5 - AndroidmarisxanisView Answer on Stackoverflow
Solution 6 - AndroidranbuchView Answer on Stackoverflow