Pergunta

Eu criei uma atividade que serve apenas para ser lançado a partir de um link eu não quero essa atividade para ter uma GUI (usando um filtro de intenção.) - Eu só quero que ele inicie um serviço e colocar uma notificação na Barra. Eu tentei colocar o filtro de intenção para o link no meu serviço, mas que não funciona. Existe uma coisa melhor para fazer isso que irá responder aos filtros de intenção - ou posso apenas fazer a minha actividade não tem um GUI
? Desculpe se estou sendo confuso, Isaac

Foi útil?

Solução

Sua melhor aposta parece estar usando um BroadcastReceiver. Você pode criar um novo BroadcastReceiver que escuta a intenção de desencadear a sua notificação e iniciar o seu serviço como este:

public class MyIntentReceiver extends BroadcastReceiver {    
  @Override 
  public void onReceive(Context _context, Intent _intent) {
    if (_intent.getAction().equals(MY_INTENT)) {
      // TODO Broadcast a notification
      _context.startService(new Intent(_context, MyService.class));
    }
  }    
}

E você pode registrar este IntentReceiver diretamente no manifesto do aplicativo sem a necessidade de incluí-lo dentro de uma atividade:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.domain.myapplication">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:enabled="true" android:name="MyService"></service>
    <receiver android:enabled="true" android:name="MyIntentReceiver">
      <intent-filter>
        <action android:name="MY_INTENT" />
      </intent-filter>
    </receiver>
  </application>
</manifest> 

Outras dicas

Ecoando resposta anterior, você não deve usar um receptor de transmissão.

Na mesma situação, o que eu fiz foi declarar o tema assim:

<activity android:name="MyActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoDisplay">

Eu não tenho certeza se um serviço iria funcionar, mas um receptor de transmissão definitivamente não. URL são lançados usando startActivity (). receptores de radiodifusão não pode responder a isso.

http://developer.android.com/reference/android/content /BroadcastReceiver.html

FTA: Note-se que, embora a Intenção classe é usada para enviar e receber estas transmissões, o mecanismo de transmissão intenção aqui é completamente separado do Intenções que são usados ??para iniciar as atividades com Context.startActivity (). Não há nenhuma maneira para um BroadcastReceiver para ver ou Intenções de captura usados ??com startActivity (); Da mesma forma, quando você transmitir uma intenção, você nunca vai encontrar ou iniciar uma actividade.

Use Service. I funciona definitivamente. Quando você clica no programa, ele iria fazer o seu trabalho sem qualquer GUI. Use pendintgintent ... getService (MySerice.class ....). Em seguida, crie um novo MyService classe estender a classe de serviço. Dentro MyService.class, substituir onStart () e fazer o que quiser fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top