Exemple de base

Cette section vous explique comment créer un appel Hello World interprofils dans votre application. Vous pourrez ainsi vous familiariser avec le SDK et découvrir sur lequel s'appuyer. Nous vous recommandons de suivre activement en la développant dans votre application.

Configurer un appareil de test avec un profil professionnel

Google crée l'application Test DPC pour vous aider à simuler et à tester une application gérée sur votre propre appareil. Il configurera un profil professionnel et vous fournira avec des commandes pour activer ou désactiver certaines fonctionnalités de l’appareil.

  • Installez l'application DPC de test.

    Ouvrez le Google Play Store et téléchargez l'application Test DPC.

  • Configurer un profil professionnel

    Une fois l'application installée, deux icônes s'affichent sur l'appareil : et l'icône de l'application Test DPC. Appuyez sur l'icône de configuration, puis suivez les étapes.

Vous disposez désormais de deux profils distincts, un pour les applications personnelles et un pour les applications professionnelles. Vous pouvez passer de l'un à l'autre via les onglets situés en haut de la liste d'applications.

profil personnel/professionnel

Lorsque vous installez votre application, elle s'installe normalement automatiquement dans les deux profils. Si jamais vous devez l'installer explicitement dans le profil professionnel, Vous pouvez utiliser l'argument --user avec adb install.

$ adb install --user [id number of profile] [path of apk file]

Pour plus d'informations sur la configuration d'un appareil de test, consultez cette .

Vérifier que votre application est correctement configurée

Activer Java 8 assistance et assurez-vous que votre minSdk est d'au moins 19.

Ajouter des dépendances Gradle

dependencies {
  annotationProcessor
'com.google.android.enterprise.connectedapps:connectedapps-processor:1.1.2'
  implementation
'com.google.android.enterprise.connectedapps:connectedapps:1.1.2'
  implementation
'com.google.android.enterprise.connectedapps:connectedapps-annotations:1.1.2'
}

Nous utilisons Guava dans cet exemple. Il ne s'agit pas d'une exigence pour utiliser le SDK, suivez le message Hello World. Vous devez également ajouter api("com.google.guava:guava:29.0-android")

Créez une classe qui contiendra votre appel de test interprofils.

Pour la rendre plus utile par la suite, vous devez la placer dans le même package que celui utilisé aimerait que vos vrais appels interprofils soient comptabilisés.

public class HelloWorld {

  @CrossProfile
  public ListenableFuture<String> helloWorld() {
    return Futures.immediateFuture("Hello world");
  }
}

Si vous ne pouvez pas compter sur le support de Guava for Futures, suivez simplement pour le moment et puis nous passons à l'étape finale qui vous indique les modifications à apporter.

Passer un appel dans tous les profils

Vous pouvez le faire dans une classe qui devra passer de vrais appels entre profils. plus tard.

// TODO: inject/pass these into the class later instead.
CrossProfileConnector crossProfileConnector =
  CrossProfileConnector.builder(this).build();
ProfileHelloWorld profileHelloWorld =
  ProfileHelloWorld.create(crossProfileConnector);

ListenableFuture<Map<Profile, String>> resultsFuture =
  profileHelloWorld.both().helloWorld();

FluentFuture.from(resultsFuture)
  .addCallback(new FutureCallback<Map<Profile, String>>() {
    @Override
    public void onSuccess(Map<Profile, String> results) {
      for (Profile profile : results.keySet()) {
        Log.w("tag", "CROSS_PROFILE profile: " + profile.asInt()
          +   "; result: " + results.get(profile));
      }
    }
    @Override
    public void onFailure(Throwable t) {
      Log.e(TAG, "Failed to say hello world on both profiles", t);
    }
  }, directExecutor());

Fournir l'instance au SDK

Bien entendu, l'appel de méthode helloWorld mentionné précédemment se situe au niveau d'une et non la vraie. Souvent, vos classes réelles sont des singletons ou d'autres des classes complexes qui dépendent de frameworks d'injection de dépendances comme Dagger. À permettent d'appeler la logique sur la classe réelle de l'autre profil, chaque classe personnalisée La classe @CrossProfile doit avoir une méthode de fournisseur correspondante dans un @CrossProfileProvider. Créez cette classe.

public class HelloWorldProvider {

  @CrossProfileProvider
  public HelloWorld getHelloWorld() {
    return new HelloWorld();
  }
}

Câblage supplémentaire

La génération de code requise pour prendre en charge les classes et méthodes personnalisées nécessite un une petite quantité de câbles supplémentaires. Il s'agit de gérer les complexités liées à de nombreux objectifs de compilation et exigences de visibilité à grande échelle.

Tout d'abord, annotez une classe de haut niveau existante ou nouvelle avec @CrossProfileConfiguration, qui pointe vers vos classes de fournisseur.

@CrossProfileConfiguration(providers = HelloWorldProvider.class)
abstract class HelloWorldConfiguration {}

Ajoutez ensuite le service généré automatiquement à votre fichier manifeste, dans la <application> tag Cela peut ne pas se résoudre tant que vous n'avez pas créé votre projet.

<service
android:name="com.google.android.enterprise.connectedapps.CrossProfileConnector_Service"
android:exported="false"/>

Enfin, à des fins de développement, attribuez-vous le rôle INTERACT_ACROSS_USERS. l'autorisation. Si vous ne l'avez pas déjà, vous ne pourrez pas le conserver dans mais c'est le moyen le plus simple de se lancer. Tout d'abord, ajoutez-la se présente comme suit:

<uses-permission
      android:name="android.permission.INTERACT_ACROSS_USERS"
      tools:ignore="ProtectedPermissions"/>

Ensuite, vous pouvez vous accorder l'autorisation à partir de la ligne de commande avec adb en tant que (si ce n'est pas déjà fait dans votre application):

adb shell pm grant <your package> android.permission.INTERACT_ACROSS_USERS

Si vous ne pouviez pas dépendre de Guava for Futures, vous devrez faire quelques des modifications. Tout d'abord, renvoyez le chaîne directement et imprimer les résultats de l'appel dans tous les profils. Deuxièmement, comme ces appels sont désormais synchrones, vous devez placer votre appel interprofils et l'impression des résultats dans la l'écouteur de connexion.

Lorsque vous exécutez le code listé sous "effectuer un cal dans tous les profils" vous devriez voir deux journaux pour ''Hello World'', un pour chaque profil. Si vous n'obtenez qu'un seul journal, assurez-vous d'avoir installé votre application dans les deux profils et d'avoir accordé l'autorisation l'autorisation.