このセクションでは、Google Cloud 内でクロス プロファイル Hello World 呼び出しを作成する方法について説明します。 説明します。これにより、SDK について理解を深め、 その上に構築するものですこのコースのステップに沿って アプリの開発を通じて アプリの品質を改善できます
仕事用プロファイルを使用してテストデバイスをセットアップする
Google が開発した Test DPC アプリを使用して、Managed Microsoft AD を 確認する必要があります仕事用プロファイルが設定され、Google Chat で デバイスの特定の機能を有効または無効にするコントロールがあります。
Test DPC アプリをインストールします。
Google Play ストアを開き、Test DPC アプリをダウンロードします。
仕事用プロファイルをセットアップする
アプリがインストールされると、2 つのアイコンがデバイスに表示されます。 設定アイコンと [Test DPC app] アイコンをセットアップ アイコンをタップし、 できます。
これで、個人用アプリと仕事用アプリ用の 2 つの個別のプロファイルができました。 切り替えるにはアプリリストの上部にあるタブを使用します。
アプリをインストールすると、通常は
定義できます。仕事用プロファイルに明示的にインストールする必要がある場合は、
adb install で --user
引数を使用できます。
$ adb install --user [id number of profile] [path of apk file]
テストデバイスの設定について詳しくは、こちらの リンクをご覧ください。
アプリケーションが適切に構成されていることを確認する
Java 8 を有効にする サポート minSdk が 19 以上であることを確認します
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'
}
この例では Guava を使用します。これは SDK を使用する際の要件ではありませんが、
hello world.com のようになります。
api("com.google.guava:guava:29.0-android")
。
テスト用のクロス プロファイル通話を含む新しいクラスを作成する
これを後でさらに活用するには、 本当のクロスプロファイル通話を 記録してほしいというものです
public class HelloWorld {
@CrossProfile
public ListenableFuture<String> helloWorld() {
return Futures.immediateFuture("Hello world");
}
}
Guava for Futures のサポートに依存できない場合は、そのままフォローして、 最後のステップでは 必要な変更を確認できます
クロス プロファイル通話を行う
クラスで実際にクロス プロファイル通話を行う 後で説明します
// 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());
インスタンスを SDK に提供する
前述の helloWorld
メソッド呼び出しは、生成された
実際のクラスではありません。多くの場合、実際のクラスはシングルトンか
Dagger などの依存関係インジェクション フレームワークに依存する複雑なクラス。宛先
他のプロファイルの実際のクラスでロジックを呼び出せるようにします。
@CrossProfile
クラスには、対応するプロバイダ メソッドが
@CrossProfileProvider
クラス。このクラスを作成します。
public class HelloWorldProvider {
@CrossProfileProvider
public HelloWorld getHelloWorld() {
return new HelloWorld();
}
}
追加の配線
カスタムクラスとカスタム メソッドのサポートに必要なコード生成には、 少量の追加配線が必要になりますこれは、ハードウェアやソフトウェアに ビルド ターゲットと可視性の要件が大規模に維持されます。
まず、既存または新しい上位クラスに @CrossProfileConfiguration
アノテーションを付け、プロバイダ クラスを参照します。
@CrossProfileConfiguration(providers = HelloWorldProvider.class)
abstract class HelloWorldConfiguration {}
次に、自動生成されたサービスをマニフェストの
<application> tag
。これは、プロジェクトを構築するまで解決されない場合があります。
<service
android:name="com.google.android.enterprise.connectedapps.CrossProfileConnector_Service"
android:exported="false"/>
最後に、開発目的のため、INTERACT_ACROSS_USERS
を自身に付与します。
付与します。これをまだお忘れの場合は、
最も簡単な方法です。まず
マニフェストを次のように使用します。
<uses-permission
android:name="android.permission.INTERACT_ACROSS_USERS"
tools:ignore="ProtectedPermissions"/>
次に、adb でコマンドラインを使用して、自身に権限を付与できます。 (アプリにまだない場合)。
adb shell pm grant <your package> android.permission.INTERACT_ACROSS_USERS
Futures に Guava を使用できなかった場合、いくつか作成する必要があります できます。"Hello World" レスポンスを結果を出力します。 クロスプロファイルコールアウトの 例を見てみましょう2 つ目に これらの呼び出しは 同期的になったため クロス プロファイルの呼び出しと結果の印刷を 接続リスナー。
「クロス プロファイル カレンダーの作成」に記載されているコードを実行する場合次のように表示されます。 「Hello World」の 2 つのログ(各プロファイルから 1 つ)します。ログが 1 つしかない場合は、 両方のプロファイルにアプリをインストールし、 付与します。