Pas autorisé à démarrer le service de l'Intention, sans l'autorisation de l'expéditeur ne pas obtenir les autorisations

Je travaille avec Mark Murphy est un excellent Commonsware livres - mais il a beaucoup de choses à digérer. J'ai construit le "FakePlayer' app (fait semblant d'être un lecteur mp3). Il contient un service. Comme une expérience d'apprentissage j'ai essayé d'écrire une simple application (n'a qu'un bouton) dont cliquez sur gestionnaire:

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

Il a bien fonctionné - le démarrage du service ok. J'ai remarqué que l'Éclipse se plaindre d'aucune autorisation sur le service, donc j'ai mis à jour le service de l'manifeste par l'ajout de 2 lignes, android:autorisations et android:exportées:

    <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>

J'ai rechargé le joueur de l'application sur le périphérique (je suis sur un Galaxy S2) à l'aide de 'debug' sous eclipse. Il semblait fonctionner; le starter app provoqué une autorisation d'exception, à laquelle je m'attendais.

J'ai ensuite ajouté le démarreur manifeste de l'application (pour lui donner la permission):

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

J'ai rechargé le démarreur application sur l'appareil (à l'aide de debug sous Eclipse). Toujours obtenir l'autorisation d'erreur dans le starter app.

J'ai enlevé les deux applications de l'appareil et de le réinstaller (à l'aide de debug...), l'application du service d'abord, puis de démarreur. Toujours obtenir perm erreur.

Je suis en train de travailler mon chemin à travers le "comment utiliser un service distant' article de M. Murphy Avancée Android livre, donc j'ai réalisé que ce n'est pas la meilleure façon peut-être de travailler avec l'ensemble des applications.

J'ai fait un "adb shell dumpsys ensemble", situé le starter app, et a constaté qu'elle avait 'permissionsFixed=false' et non 'grantedPermissions". Je prends ce à dire que le manifeste de changement dans le starter application n'a pas réussi à avoir de la région de perm ajoutés à l'application. Mais je n'ai aucune idée pourquoi. Comme une expérience d'apprentissage, il est généré seulement la confusion jusqu'à présent....

Des indices très apprécié! Merci!

OriginalL'auteur Art Swri | 2013-03-18