Remote Service

A

azzuro

Neues Mitglied
0
Hallo erstmal,
ich bin neu hier im Forum habe ein Problem mit der Entwicklung von Remote Service.

Ich möchte den Client und den Service in 2 Projekte auslagern.

Belasse ich Client und Service in einem Projekt funktioniert alles wie gewollt.

Trenne ich jetzt den Client vom Service und teile es in 2 Projekte auf, kann ich den Service nicht mehr ansprechen.
Ich bekomme im log nur die Message das das System den Intent nicht finden kann. Ich Entwickler momentan nur im Emulator.
Ich Frage mich ob es eine Reihenfolge gibt wie ich deployen muss.
Ich habe verschiedene Logausgaben eingebaut und habe festgestellt das die onCreate Methode vom Service nicht aufgerufen wird.

Hier ist das Manifest vom Service
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.gps.service" android:versionCode="1" android:versionName="1.0">
    <application android:enabled="true">
        <service android:name=".GpsService" android:label="GpsService"
            android:exported="true" android:process=":remote" android:enabled="true">
            <intent-filter>
                <action android:name="de.gps.service.IGpsService" />
            </intent-filter>
        </service>

        <uses-sdk android:minSdkVersion="4" />
    </application>
    
    
</manifest>
Und hier das von der Aktivity

Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.gps.service" android:versionCode="1" android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>
        </activity>
</application>
    <uses-sdk android:minSdkVersion="4" />
</manifest>
 
Zuletzt bearbeitet:
Der Gott Google sagt:
Code:
Therefore, activities that are willing to receive implicit intents must  include "android.intent.category.DEFAULT" in their intent filters.
( gilt AFAIK auch für services )

Und den Service würde ich auch von der Activity-Manifest entfernen
 
Erstmal danke für die Atwort, nur leider hat es zu keinem Erfolg geführt.
Es bleibt immernoch dabei das ich beim Versuch den Service zu binden
11-13 14:09:05.180: WARN/ActivityManager(592): Unable to start service Intent { act=de.gps.service.IGpsService }: not found

Ich bin dankbar für jede weitere Idee
 
API-Samples haben Paar Services. Versuch mal dort die Anregungen zu finden.
 
Ich habe mir die Beispiel schon angeschaut,aber da ist es ja so das Service und Client sich ein Manifest teilen.

Diese Variante habe ich auch probiert und funktioniert.

Nur da ich einen Service anbieten will der von verschiedene Clients verwendet werden soll "muss" es bei mir anders sein.
Mein Service soll keine Abhängigkeit zu einer bestimmten Activity haben.

Ich denke das das Probleme darin liegt, das das System den Service nicht "findet" Ich mache bestimmt bei der Registrierung des Intents einen fehler. Aber weiß nicht welchen....
 
Hast du auch SoftKeyboard angesehen?

IMHO - genau das was du brauchst
 
Ich habe es mir angeschaut, aber es handlet sich nicht um ein remote Service.
Ich kling schon so als würde ich alle deine Ideen ablehnen, aber ich habe schon einige Zeit mit dem Problem verbracht und es nervt langsam.

Weiß du welches Beispiel das Soft Keyboard verwendet ??
 
Poste mal Java-Code, wie du es aufrufst.
 
Hier ist der Code vom Client
Code:
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "onCreate() startet ");
        Button bindBtn = (Button) findViewById(R.id.bindBtn);
        bindBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                bindService(new Intent(IGpsService.class.getName()), serConn,
                        Context.BIND_AUTO_CREATE);
            }
        });

        Button unbindBtn = (Button) findViewById(R.id.unbindBtn);
        unbindBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                unbindService(serConn);
            }
        });

    }
 
Hallo,
kann sein, dass du einen Punkt zuviel hast:

Code:
 <service android:name="[COLOR=Red].GpsService[/COLOR]" android:label="GpsService"
Ich mein den Punkt vor GpsService. Wenns nciht klappt sorry für den dummen Kommentar^^ ;)

lg Memex
 
Erstmal danke für deinen "(dummen)" ;) Kommentar.
Hatte ich auch schon probiert führte aber zu keinem Erfolg.
Vielleicht habe ich auch einen Konzeptfehler oder einen Knoten in meinen Gehirnwindungen. Vielleicht könnte ja jemand, der sich besser damit auskennt, mal ein kleines Projekt erstellen und mir sagen ob er es zum Laufen bekommt.
Ich weiß momentan einfach auch nicht mehr weiter.

*Grübel*

Ach bevor ich es vergesse, wenn ich mir die Prozesse auf dem Android anschaue, wird mir mein Service auch angezeigt, in der Prozessliste.
 
Zuletzt bearbeitet:

Ähnliche Themen

J
Antworten
0
Aufrufe
889
JonHart
J
H
Antworten
2
Aufrufe
819
HelloWorldx8
H
A
Antworten
2
Aufrufe
1.140
AndrejT
A
Zurück
Oben Unten