2011-12-02 13 views
16

Wiem, nie jestem pierwszy z tym problemem, ale próbowałem tak wielu rozwiązań, znalazłem i nikt nie działa ... może możesz znaleźć błądAndroid: nie można rozpocząć intencji serwisowej: nie znaleziono?

Błąd (również przyszedł tak bez. Klasa i /.Client zależności od innych)

12-02 16: 40: 15.359: w/ActivityManager (74) nie można uruchomić usługi Intent {act = com.android.fh.EnOceanApp. Client.class}: nie znaleziono

W manifeście jest to uwzględnione w wniosku, poza działaniami (Próbowałem go również w działaniach i ".Client"

Kod w onCreate()

startService(new Intent(this, Client.class)); 

lub

startService(new Intent(this.getApplicationContext(), Client.class)); 

lub

Intent intent=new Intent("com.android.fh.EnOceanApp.Client.class"); 
    this.startService(intent); 

lub

Intent intent=new Intent("com.android.fh.EnOceanApp.Client"); 
    this.startService(intent); 

A teraz nie mam już pomysłu .... com.android.fh.EnOceanApp to pakiet, Client.java usługa klasy w tym pakiecie

i oczywistego zapomniałem:

<application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".EnOceanAppActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter>  
     </activity> 

     <activity android:name=".ListView" 
      android:label="List View"> 
     </activity> 
     <activity android:name=".GraphView" 
      android:label="Graph View"> 
     </activity> 
     <service 
      android:name=".Client"></service> //with and without ., of course without this comment 
    </application> 
+1

zamieścić swoje oczywisty. –

+0

Zadeklaruj swoje usługi w swoim manifeście – njzk2

Odpowiedz

2

Więc .. po prostu, aby w końcu pomóc innym, czy nie:

zrobiłem nowy projekt, kopiowane źródła i próbował go uruchomić: usługa została znaleziona teraz. Jaka była różnica, lub innymi słowy: co sądzę, może powodować problemy: długa nazwa pakietu lub początek z com.android. .. W nowym projekcie właśnie wybrałem com.enocean

4

Czasami trzeba całkowicie zakwalifikować nazwę klasy w manifeście, zamiast używać skrótu (.nazwęklasy). Widziałem to, gdy korzystałem z zajęć z innej paczki, ale być może pomogłoby to, ponieważ intencja usługi mogła wyjść poza aplikację.

+0

To nic nie zmienia do tej pory :( – nico

+0

Pomógł mi.Miałem moją usługę w innym pakiecie niż moja główna działalność – Tirtha

+0

com.andorid. * Jest ograniczone na Playstore (tylko do FYI) – scottyab

21

Dzięki dla użytkownika njzk2 za powiadomienie mnie, co się dzieje.

Miałem ten sam problem. Wygląda na to, że system operacyjny Android nie może znaleźć żądanej klasy usług, jeśli wcześniej nie zarejestrowałeś się w pliku manifestu swojego proyect.

Pamiętaj, że usługa jest jak aktywność, ale bez graficznego interfejsu. Oznacza to, że usługi musi być zarejestrowany, zanim będzie można z nich korzystać

ten sposób można zarejestrować usługę w Android projektu:

<application> 
    <!-- your code --> 
    <activity> 
     <!-- your code --> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <service android:name="com.your.own.service.class"></service> 
</application> 

Wystarczy pamiętać, że klasa yourservice musi rozciągać się od służby, jeśli nie twoja klasa nie będzie usługą.

public class YourService extends Service{} 
+3

Miał ten sam problem i zauważył, że jeśli zamknę tag z "/>", nie wykryje usługi po aktualizacji aplikacji, ale jeśli zamknę ją z "", wykryje to po aktualizacji aplikacji. Weeiird. – Danail

+0

@Danail Dzięki rozwiązał problem dla mnie też! :-) – Ostkontentitan

+0

@Konstantin, pomyśl tylko, że musisz wyczyścić cały projekt. To był problem dla mnie. – Danail

0

Zrobiłem głupi błąd dodając tag do osobnej w manifeście.

W takim przypadku bieżąca aplikacja nie może znaleźć zdefiniowanej usługi.

Mam nadzieję, że pominiesz ten błąd :)

Dzięki.

1

Pomimo WSZYSTKICH odpowiedzi w tym poście i wielu związanych z nim Unable to start service Intent: not foundUnable to start Service Intent, wciąż walczyłem i zajęło mi trochę czasu, aby to osiągnąć. Mój scenariusz był nieco bardziej skomplikowany, ponieważ próbuję uruchomić usługę w innej aplikacji niż ta, z którą ją wywołuję. Zorientowałem się, a tu są WSZYSTKIE szczegóły, wraz z kodem bonusowym.

główną działalność wywoływania intencji (lub gdziekolwiek)

Intent intent=new Intent("com.example.core.MusicService.1234"); 
//Or Intent intent=new Intent("com.example.core.MusicService.TOGGLE_PLAYBACK"); 
PendingIntent pendingIntent = PendingIntent.getService(this, 99, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

Oczywisty: of Service (Usługa znacznika wewnątrz tagu aplikacji) To

<service android:name="com.example.core.MusicService"> 
     <intent-filter> 
      <action android:name="com.example.core.MusicService1234"></action> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="com.example.core.MusicService.TOGGLE_PLAYBACK"></action> 
     </intent-filter> 
    </service> 

MusicService.java

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    if(intent != null){ 
     if(intent.getAction() != null){ 
      if(intent.getAction().contentEquals("com.example.core.MusicService.TOGGLE_PLAYBACK")){ 
       //Do work here 
      } 
     } 
    } 
} 

Uwagi

  • usługa nie musi być uruchomiony, to intencją rozpocznie
  • "com.example.core.MusicService1234" i "com.example.core.MusicService.TOGGLE_PLAYBACK" może być tym, czym chcesz, ale oczywiście musi pasować do filtra zamiaru w manifeście usługi z intencją wywoływania. Możesz umieścić wiele z nich, aby móc wykonywać różne czynności, gdy usługa zaczyna się w zależności od wartości z Twojej intencji, może być dowolna, ale musi być unikalna, jeśli używasz powiadomień.
  • Nie jestem na pewno można połączyć się z usługą w innej aplikacji (takiej jak ta) bez użycia filtra intent - jeśli tak, to proszę, aby ktoś nas oświecił. Próbowałem i to nie działa.

kredytowe: zbiorczej informacji ze wszystkich postów :)

+0

ta odpowiedź wygląda interesująco, ale nie ma tak wiele kodu, aby wypróbować dostarczone rozwiązanie – Lisitso

0

Jest głupia pomyłka android

To nie zadziała

<service 
      android:name=".classname"/> 

Ale to będzie działać, mieć oddzielny zamykający tag

<service 
      android:name=".classname"></service> 
0

Cóż, w moim przypadku musiałem oczyścić projekt. Zdarza się to czasami, gdy utworzyłeś nową klasę Java dla usługi w twoim pakiecie/projekcie, ale nie zbudował/nie wyczyścił poinstrukcji projektu. W moim przypadku wystarczy wyczyścić projekt, aby pozbyć się błędu.

0

Jeśli ktoś widzi to i ma ten sam problem, że ja, to dlatego, że po przewodnika i używane context.startService() zamiast context.startActivity()

Powiązane problemy