問題タブ [android-for-work]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1120 参照

android - Android DevicePolicyManager#isAdminActive の結果とデバイス マネージャーのアクティブ化の失敗を検証する方法

解決方法がわからない興味深い状況に直面しています。ユーザーが Android for Work ユーザーとして初めてア​​プリにサインインするとき、アプリがデバイス マネージャーとして登録されていることを確認する必要があります。を呼び出しDevicePolicyManager#isAdminActiveてこれに該当するかどうかを確認し、 が返された場合はwithfalseを起動して、デバイス管理を有効にする Android コントロールを起動します。これが発生すると、アプリが再度起動されたとき (またはデバイス管理フローから戻ったとき) の値が再度チェックされます。ユーザーがデバイス管理を有効にしている場合、すべて問題なく、アプリはそのまま続行されます。Intentaction=DevicePolicyManager.ACTION_ADD_DEVICE_ADMINDevicePolicyManager#isAdminActive

興味深いことに、これは、ユーザーが最初にフローを通過したときに、期待どおりに機能します。残念ながら、再起動後、ユーザーがアプリを起動すると、デバイス管理がまだオンになっていることを確認しますDevicePolicyManager#isAdminActive。これは、デバイスのセキュリティ設定を調べることで確認されますDevicePolicyManager#isAdminActivefalseさらに悪いことに、デバイス管理を有効にしようとすると、次の例外が発生します。

W/DeviceAdminAdd: 管理者 ComponentInfo{com.mysoft.myapp/com.mysoft.core.receivers.MyAppAdminReceiver} をアクティブ化しようとして例外が発生しました java.lang.IllegalArgumentException: 管理者は既に android.os.Parcel.readException(Parcel.java: 1550) で android.os.Parcel.readException(Parcel.java:1499) で android.app.enterprise.IEnterpriseDeviceManager$Stub$Proxy.setActiveAdmin(IEnterpriseDeviceManager.java:867) で android.app.enterprise.EnterpriseDeviceManager.setActiveAdmin(EnterpriseDeviceManager) .java:720) com.android.settings.DeviceAdminAdd.addAndFinish(DeviceAdminAdd.java:346) で com.android.settings.DeviceAdminAdd$3.onClick(DeviceAdminAdd.java:313) で android.view.View.performClick(View) .java:5242) android.widget.TextView.performClick(TextView.java:10571) で android.view.View$PerformClick.run(View.java:21196) で android.os.Handler.handleCallback(Handler.java:739) で android.os.Handler.dispatchMessage(Handler.java:95) でandroid.os.Looper.loop(Looper.java:145) で android.app.ActivityThread.main(ActivityThread.java:6938) で java.lang.reflect.Method.invoke(Native Method) で java.lang.reflect. Method.invoke(Method.java:372) at ...java.lang.reflect.Method.invoke(Method.java:372) で呼び出し (ネイティブ メソッド) ...java.lang.reflect.Method.invoke(Method.java:372) で呼び出し (ネイティブ メソッド) ...

システム セキュリティ設定ページからデバイス管理を手動で有効にしようとしても、この例外が logcat コンソールに表示されるため、元のIntent形式が正しくないとは思いません。

ここで問題があります。Android デバイス管理 API を 1 回呼び出すと、デバイス管理者がアクティブ化されていないことがわかりますが、同じ API をもう一度呼び出すと、アクティブ化されていることがわかります。2 番目のエラーは実際には間違っていると思いますが、管理を有効にできないため、ユーザーはループに陥り、アプリを使用できません。

他の誰かがこのエラーに遭遇しましたか?もしそうなら、どのようにコーディングしますか?

0 投票する
1 に答える
1607 参照

android - 異なるプロファイルのクエリ インテント アクティビティ : Android for Work

技術的な理由により、Android File Pickerを使用してファイルとそのコンテンツをアプリケーションに取り込むことができません。そのため、意図を照会し、独自の UI で結果を処理するソリューションを考え出しました。

アプリケーションのリストを取得する方法は次のとおりですIntent.ACTION_GET_CONTENT

これは正常に機能し、リクエストを処理できるアプリケーションを一覧表示します。

しかし、私はAndroid for Workを使用しており、上記のコードを実行すると、 Work Profileで使用できるアプリケーションのリストしか取得できません。これは予想どおりです。

しかし、上記のコードから返される結果の 1 つは、Android File PickerのPersonal Accountにインストールされているアプリケーションを一覧表示する "Switch to Personal"です。

問題は、どうすれば同じ動作を得ることができるかということです。個人プロファイルからインテント アクティビティを照会するにはどうすればよいですか?

0 投票する
0 に答える
540 参照

android - エンタープライズ Android で SSL ハンドシェイクが失敗するが、通常のデバイスでは正常に動作する

エンタープライズ デバイスとの SSL 接続を確立する際に問題に直面しています。通常の Android デバイスでアプリケーションを実行すると、SSL ハンドシェイクが成功します。なぜこれが起こっているのかわかりません。コードは両方のデバイスで動作するはずです。

証明書を選択し、エイリアスプライベートと証明書チェーンを抽出するための私のコードは次のとおりです。

今すぐ OkHttpClient でバインドします:

このコードは、通常のデバイスでは正常に機能しますが、エンタープライズ デバイスでは機能しません。

エンタープライズ デバイスについて何かする必要がある場合はお知らせください。

よろしく