1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

"Not allowed to bind to service Intent"???

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von domino-bs, 16.06.2011.

  1. domino-bs, 16.06.2011 #1
    domino-bs

    domino-bs Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    22.03.2011
    Phone:
    HTC Desire HD
    Moin.

    Vorgeschichte:
    Ich arbeite gerade an einer Overlaynetzwerkumsetzung für das DTN-Protokoll auf Android. Dafür habe ich einen Remoteservice geschrieben, der auch schon seinen Dienst tut. Um die Funktionen des Remoteservice zu testen habe ich seinerzeit (natürlich im gleichen Projekt) eine Activity benutzt, die sich per ServiceConnection über das AIDL Interface mit meinem Remoteservice verbunden hat. Das hat auch alles super geklappt.

    Problem:
    Jetzt wollte ich noch eine kleine App schreiben, womit ich den Remoteservice präsentieren kann. Die App soll Kleinanzeigen aufgeben können und vom Remoteservice empfangene Kleinanzeigenpakete abfragen. Dazu hat die "Kleinanzeigenapp" auch einen eigenen Service (lokal, kein Remote). Dieser Service muss sich nach dem Start mit dem Remoteservice verbinden. Der Code sieht eigentlich auch ganz gut aus.. (halt eben so wie bei der Test-Activity aus dem Remoteservice-Projekt).
    Wenn ich jetzt jedoch meinen Remoteservice starte und anschließend den Service von der Kleinanzeigenapp starte wirft mir Android die Exception "java.lang.SecurityException: Not allowed to bind to service Intent { cmp="..remoteservice.." } um die Ohren. Zuerst dachte ich an eine fehlende Permission, aber Google hat ncihts wirklich sinnvolles zu Tage gefördert. Das Codefragment, dass den Crash auslöst lautet:

    Code:
    // Verbindung zum DTNRemoteservice aufbauen
            Intent i = new Intent();
            i.setClassName("de.ibr.dtnandroidservice", "de.ibr.dtnandroidservice.remoteservice.DTNRemoteService");
            bindService(i, mConnection, Context.BIND_AUTO_CREATE);
    
    und wird in der onCreate() Methode des Kleinanzeigenservices ausgeführt.. Wäre super, wenn wer eine Idee hat. Warum kann ich aus dem gleihcen Projekt problemlos darauf zugreifen und aus einer anderen App heraus nicht!?

    Gruß DoM

    P.S.: Wenn es hilft poste ich gerne weitere Codefragmente, aber wenn ich "einfach" mal den ganzen Connectionkram poste sind wir bei einem Haufen Zeilen ;-) Wenn geht also bitte gezielt nachfragen!
     
  2. domino-bs, 16.06.2011 #2
    domino-bs

    domino-bs Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    22.03.2011
    Phone:
    HTC Desire HD
    Moin nochmal..

    Ich scheine das Problem gelöst zu haben. Wenn man sich von ausserhalb des eigenen Projekts auf einen Remoteservice verbinden will muss im Manifest des Remoteserviceprojekts ein 'Android:export="true"' stehen =>

    Code:
    <service android:name=".remoteservice.name"    android:process=":serviceProzessName" android:exported="true">
    
    Standartwert ist (falls man keine Intentfilter drinstehen hat) false..
    Ich hoffe mal das erspart dem ein oder anderem langwieriges suchen -.-

    Gruß DoM
     

Diese Seite empfehlen