2012-12-03 5 views
6

ich bin anfänger bei android. Ich habe zwei Klasse und erste Klasse istwie man service in android ohne eine aktivität

public class SmsReceiver extends BroadcastReceiver{} 

Und die zweite Klasse ist

public class SMS extends Activity{} 

Alles, was ich will, das zu tun: wenn ich eine SMS bekommen, startet Aktivität und etwas tun. Aber ich möchte "Service" anstelle von "Aktivität" verwenden. Ich meine, wenn die Anwendung startet, dann starten Sie den Dienst ohne Aktivität.

ist das möglich?

+0

müssen Sie Ihre Aktivitätsklasse erweitern tatsächlich zu bedienen und den Service von Broadcast reciver –

Antwort

3

Starten Sie Ihren Dienst von SmsReceiver als:

public class SmsReceiver extends BroadcastReceiver{ 
@Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if(action.equals("android.provider.Telephony.SMS_RECEIVED")){ 
     //action for sms received 

      // start service here 
      Intent intent=new Intent(context,Your_Service.class); 
      context.startService(intent); 

     } 
     else { 

     }  
    } 
} 

und stellen Sie sicher, dass Sie Ihren Service in AndroidManifest.xml als registriert haben:

<service android:name="com.xxx.xx.Your_Service" /> 
+0

Danke, die Notiz über AndroidManifest satrt war sehr hilfreich für mich. –

1

Ja, Sie können das tun, indem Sie einfach einen BroadCastReceiver erstellen, der Ihren Dienst aufruft, wenn Ihre Anwendung bootet. Hier ist eine vollständige Antwort von mir gegeben. Android - Start service on boot

Wenn Sie nicht möchten, dass ein beliebiges Symbol/Launcher für Sie Anwendung können Sie das auch tun, nur schaffen keine Aktivität mit

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

einfach Ihren Dienst erklären, wie sie normalerweise erklärt.

0

Wenn Sie eine SMS bekam Sie können Ihren Service durch Rundfunkempfänger

@Override 
public void onReceive(Context context, Intent intent) { 

     try { 

      context.startService(new Intent(context, 
        YourService.class)); 
     } catch (Exception e) { 
      Log.d("Unable to start ", "Service on "); 
     } 

und pls stellen sicher, dass Sie beginnen, die Erlaubnis zu AndroidManifest.xml Datei erwähnen

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

und für SMS-Versand und erhalten können Sie dieses Tutorial Sending sms in android

Verwandte Themen