ti-enxame.com

Android: não é possível iniciar a intenção do serviço: não foi encontrado?

Eu sei, eu não sou o primeiro onbe com este problema, mas eu tentei tantas soluções, eu encontrei e ninguém trabalha ... talvez você pudesse encontrar o erro

O erro (também veio sem .class e com /.Client dependendo de outras configurações)

12-02 16: 40: 15.359: W/ActivityManager (74): Não é possível iniciar o serviço Intenção {act = com.Android.fh.EnOceanApp.Client.class}: não encontrado

No manifesto, isso está incluído no aplicativo, fora das atividades (tentei também em atividades e com ".Cliente"

O código em onCreate ()

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

ou

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

ou

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

ou

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

E agora, eu não tenho mais uma idéia .... com.Android.fh.EnOceanApp é o pacote, Client.Java a classe de serviço neste pacote

e o manifesto que esqueci:

  <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>
16
nico

Então, só para eventualmente ajudar os outros ou não:

Fiz um novo projeto, copiei as fontes e tentei executá-lo: o serviço foi encontrado agora. Qual foi a diferença, ou em outras palavras: o que eu acho, poderia dar problemas: o nome do pacote longo ou o começo com com.Android.. . No novo projeto eu escolhi com.enocean

2
nico

Obrigado ao usuário njzk2 por me avisar o que estava acontecendo.

Eu tive o mesmo problema. Parece que o sistema operacional Android não consegue encontrar a classe de serviço que você solicitou, se você não tiver registrado antes no arquivo de manifesto do seu projeto.

Lembre-se de que um serviço é como uma atividade, mas sem interface gráfica. Isso significa que os serviços precisam ser registrados antes que você possa usá-los

É assim que você registra o serviço no seu projeto Android:

<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>

Lembre-se de que a classe YourService precisa se estender do Service, se a sua classe não for um serviço.

public class YourService extends Service{}
21
AXSM

Às vezes, você precisará qualificar totalmente o nome da sua classe no manifesto, em vez de usar a forma abreviada (.classname). Eu vi isso quando usei classes de um pacote diferente, mas talvez ajudasse aqui, já que a intenção do serviço pode sair do aplicativo.

4
ProjectJourneyman

Apesar de todas as respostas neste post e muitos relacionados Não é possível iniciar o serviço Intenção: não encontradoNão é possível iniciar a intenção de serviço , eu ainda lutava e demorou algum tempo para eu conseguir isso. Meu cenário foi um pouco mais complicado, já que estou tentando iniciar um serviço em um aplicativo DIFERENTE do qual estou chamando. Eu descobri e aqui estão TODOS os detalhes, juntamente com algum código de bônus. 

MainActivity da intenção de chamada (ou onde)

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);

Manifesto: de Service (Tag de serviço dentro da tag Application)

    <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
            }
        }
    }
}

Notas

  • O serviço NÃO precisa ser iniciado, essa intenção será iniciada
  • "com.example.core.MusicService1234" e "com.example.core.MusicService.TOGGLE_PLAYBACK" pode ser o que você quiser, mas obviamente precisa combinar o filtro de intenção no manifesto de serviço com a intenção de chamada. Você pode colocar vários desses para que possa executar ações diferentes quando o serviço for iniciado, dependendo do valor de sua intenção
  • 99 pode ser o que você quiser, mas deve ser único se você estiver usando notificações
  • Não tenho certeza se é possível chamar um serviço em um aplicativo diferente (como este) sem usar o filtro de intenção - se é, alguém, por favor, nos ilumine. Eu tentei e não funciona.

Crédito para: as informações cumulativas de todos os posts :)

1
Kevin

Se alguém vê isso e tem o mesmo problema que eu, foi porque segui um guia e usei context.startService() em vez de context.startActivity()

0
JamEngulfer

Bem, no meu caso eu tive que limpar o projeto. Às vezes acontece quando você criou uma nova classe Java para o serviço em seu pacote/projeto, mas não construiu/limpou o pós-projeto. No meu caso, eu só tive que limpar o projeto para me livrar do erro.

0
kzs

É um erro estúpido do Android

Isso não vai funcionar

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

Mas isso vai funcionar, tem tag de fechamento separado 

<service
            Android:name=".classname"></service>
0
arun-r

Eu cometi o erro bobo de adicionar a tag a um separado no manifesto.

Nesse caso, o aplicativo atual não pôde encontrar o serviço definido.

Espero que você pule esse erro :)

Obrigado.

0
Otpidus