Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to start service Intent: not found

I've the same issue described here but i can't understand whats wrong.

My issue is: Unable to start service Intent { act=.connections.MoodyService } U=0: not found

EDIT I've changed my package from connections to service in the source code, sorry for the confusion

My manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.moody" android:installLocation="auto" android:versionCode="0" android:versionName="0.6.7 alpha" >  <uses-sdk     android:maxSdkVersion="18"     android:minSdkVersion="14"     android:targetSdkVersion="17" />  <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  <application     android:allowBackup="true"     android:allowClearUserData="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <activity         android:name="activities.MainActivity"         android:label="@string/app_name" >     </activity>     <activity         android:name="activities.Menu_esq"         android:label="@string/title_activity_menu_esq" >     </activity>     <activity         android:name="activities.BaseActivity"         android:label="@string/title_activity_base" >     </activity>     <activity         android:name="activities.MainView"         android:label="@string/title_activity_main_view" >     </activity>     <activity         android:name="activities.LoginActivity"         android:label="@string/app_name"         android:noHistory="true"         android:windowSoftInputMode="adjustResize|stateVisible" >         <intent-filter>             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>     <activity         android:name="com.example.moody.LeftActivity"         android:label="@string/title_activity_left" >     </activity>     <activity         android:name="com.example.moody.RightActivity"         android:label="@string/title_activity_right" >     </activity>     <activity         android:name="activities.UserDetailsActivity"         android:label="@string/title_activity_user_details" >     </activity>     <activity         android:name="fragments.TopicsPreview"         android:label="@string/title_activity_copy_of_topics_preview" >     </activity>     <activity android:name="activities.Loading" >     </activity>      <service         android:name=".service.MoodyService"         android:icon="@drawable/ic_launcher"         android:label="@string/moody_service" >     </service> </application> 

service is the package and MoodyService is the class name

My service class

public class MoodyService extends Service {  public MoodyService() {     // TODO Auto-generated constructor stub }  private boolean isRunning = false; Object getContent;  @Override public IBinder onBind(Intent intent) {     // TODO Auto-generated method stub      return null; }  @Override public void onCreate() {     super.onCreate(); }  @Override public int onStartCommand(Intent intent, int flags, int startId) {     super.onStartCommand(intent, flags, startId);      // Announcement about starting     Toast.makeText(this, "Starting the Demo Service", Toast.LENGTH_SHORT)             .show();      // Start a Background thread     isRunning = true;     Thread backgroundThread = new Thread(new BackgroundThread());     backgroundThread.start();      // We want this service to continue running until it is explicitly     // stopped, so return sticky.     return START_STICKY; }  @Override public void onDestroy() {     super.onDestroy();      // Stop the Background thread     isRunning = false;      // Announcement about stopping     Toast.makeText(this, "Stopping the Demo Service", Toast.LENGTH_SHORT)             .show(); }  private class BackgroundThread implements Runnable {     int counter = 0;      public void run() {         try {             counter = 0;             while (isRunning) {                 System.out.println("" + counter++);                 new Contents().getAll(getResources(),                         getApplicationContext());                 Thread.currentThread().sleep(5000);             }              System.out.println("Background Thread is finished.........");         } catch (Exception e) {             e.printStackTrace();         }     } } 

And in my main Intent.

Intent start = new Intent(".service.MoodyService");         this.startService(start); 

and also tried

Intent intent = new Intent(this, MoodyService.class);         this.startService(intent); 

and tried with the full path

<service     android:name="com.example.moody.service.MoodyService"     android:icon="@drawable/ic_launcher"     android:label="@string/moody_service" > 
like image 659
firetrap Avatar asked Sep 30 '13 23:09

firetrap


2 Answers

Solved

I deleted the period in the beginning of the package name in the manifest and it worked, in another words:

This doesn't work:

.yourPackage.YourClass 

But this does work:

 yourPackage.YourClass 

And in the main:

Intent intent = new Intent(this, MoodyService.class);         this.startService(intent); 

But it goes against what is written in the documentation:

android:name The name of the Service subclass that implements the service. This should be a fully qualified class name (such as, "com.example.project.RoomService"). However, as a shorthand, if the first character of the name is a period (for example, ".RoomService"), it is appended to the package name specified in the element. Once you publish your application, you should not change this name (unless you've set android:exported="false").

There is no default. The name must be specified.

like image 105
firetrap Avatar answered Oct 02 '22 16:10

firetrap


The service must be also be included in the Manifest:

<service android:name="com.x.x.serviceclass"></service> 
like image 42
Francisco Corrales Morales Avatar answered Oct 02 '22 17:10

Francisco Corrales Morales