Darf nicht starten, service Absicht ohne Erlaubnis - sender nicht bekommen Berechtigungen

Arbeite ich mit Mark Murphy ' s ausgezeichnete Commonsware Bücher - aber es ist eine Menge zu verdauen. Ich baute die "FakePlayer" - app (gibt vor, ein mp3-player). Es enthält einen service. Als Lern-Erfahrung, die ich zu schreiben versucht, eine triviale app (nur eine Taste), dessen Klick-Prozedur:

Intent i = new Intent();
i.setAction("com.example.cwfakeplayer.MyPlayerService");
Context context = getApplicationContext();
context.startService(i);

Es geklappt hat - den Dienst starten, ok. Ich bemerkte, Eclipse beschwert sich über keine Berechtigung für den Dienst, so dass ich aktualisiert die service-manifest durch hinzufügen von 2 Zeilen, android:Berechtigungen und android:exportiert:

    <service 
        android:name="MyPlayerService"
        android:permission="com.example.fakeplayer.permission.MY_PLAYER_PERMISSION"
        android:exported="true"
       <intent-filter>
            <action android:name="com.example.fakeplayer.MyPlayerService"></action>
       </intent-filter>
      </service>

Ich reloaded-player-app auf das Gerät (ich verwende ein Galaxy S2) mit 'debug' unter eclipse. Es schien zu funktionieren; die starter-app verursacht eine Erlaubnis, Ausnahme, was ich erwartet hatte.

Habe ich dann Hinzugefügt, um die starter-app-manifest (um ihm die Erlaubnis):

<manifest
  ...
  <uses-sdk ....
  ....
  <uses-permission android:name="com.example.fakeplayer.permission.MY_PLAYER_PERMISSION" />

Ich reloaded starter-app auf dem Gerät (mit Debuggen unter Eclipse). Noch Holen Sie sich die Erlaubnis Fehler im starter-app.

Entfernte ich beide apps vom Gerät und neu installiert (mit debug...), service app zuerst, dann der starter. Bekomme immer noch perm Fehler.

Arbeite ich meinen Weg durch die 'wie mit einem remote-service' - Abschnitt des Mr. Murphy ' s Advanced Android-Buch, so dass ich erkannte, dass dies nicht der beste Weg ist vielleicht, die Arbeit über apps.

Habe ich ein "adb shell dumpsys-Paket", befindet sich die starter-app, und gefunden hatte es 'permissionsFixed=false' und nicht 'grantedPermissions' Abschnitt. Ich nehme das bedeuten, das manifest zu ändern in der starter-app ist nicht gelungen, in der Region perm Hinzugefügt, um die app. Aber ich habe keine Ahnung, warum. Als eine Lernerfahrung, es erzeugt nur Verwirrung so weit....

Alle Hinweise sehr dankbar! Danke!

InformationsquelleAutor Art Swri | 2013-03-18

Schreibe einen Kommentar