web-dev-qa-db-ja.com

Android:デバイスで1つのアプリのみを実行するにはどうすればよいですか?

単一のタスクを作成する必要がある顧客プロジェクトがありますAndroidデバイス。顧客は、私の会社が開発したアプリケーションをエスケープすることはできません。また、顧客は他のアプリケーションを起動することもできませんデバイスの起動時にアプリケーションが起動します全体的に、顧客がデバイスでできることはすべてアプリケーションを実行することです。

デバイスをルート化して、すべてのシステムボタンを無効にし、アプリケーションをランチャーにする以外に、これを機能させる方法はありますか。私はこの目的のために400台のデバイスを持っているので、それらすべてをルート化するには多くの時間がかかります。

COSUデバイスに関するGoogleのチュートリアルも読みましたが、非常に混乱していることがわかりました https://developer.Android.com/work/cosu.html#testing-plan

顧客がアプリをエスケープできるため、Android自身の画面固定は十分ではありません。 SureLockのようなキオスクアプリケーションを使用することを提案する人もいますが、私の会社の目標は、サードパーティのアプリを使用せずにこのための明確なソリューションを見つけることです。また、キオスクアプリケーションを介してアプリを実行することも目標ではありません。

Stack Overflowで同様の質問が投稿されていますが、探している答えは見つかりませんでした。

誰かがこの質問に対していくつかのヒントを持っている場合、私は非常に感謝します。

14
Nahka

Androidの上に構築された単一目的デバイス。実装が難しくなる可能性があります。いくつかの異なるオプションがありますが、それぞれにトレードオフがあります。

先ほど述べたように、デバイスのルート化は機能的に必要なものを取得しますが、ルート化するのに何百ものデバイスを使用すると時間がかかり、メンテナンスが難しくなり、デバイスとアプリにセキュリティの問題が生じる可能性があります。

別のオプションは、COSUデバイスに対してGoogleのLock Task Modeを使用することです[1]。リンクには、ロックタスクモードの機能を示す素敵なグラフィックがあります。

  • ホーム画面に固定された1つのアプリ
  • ロックできるのは、DPC(デバイスポリシーコントローラー)によってホワイトリストに登録されたアプリのみです
  • ホームボタンと最近のボタンが非表示
  • stopLockTask()を呼び出して終了します

このためにGoogleのソリューションを使用することには、いくつかの欠点があります。最初に、デバイス所有者として実行し、ポリシーを設定するために、完全に独立したDPCアプリを作成(および維持)することをお勧めします[2]。また、Google Playに依存してアプリケーションの更新を管理し、各デバイスに関連付けられたPlayアカウントを持つ必要があります。これらのアカウントは、デバイスごとのシンプルなアプリ配布ルールのために、単一ユーザーに関連付けられていない単一デバイスを識別するために使用されますCOSUスタイルのシナリオ」[3]。デバイスでDPCアプリを自動的に取得するには、「DPCはGoogle Playで公開されている必要があり、エンドユーザーはDPC固有の識別子を入力してデバイスセットアップウィザードからDPCをインストールできます。」[3]ユーザーアプリケーションをGoogle Play [4]にアップロードします。これは、Playでアプリを使いたくない人にとっては問題になる可能性があります。このルートに進むと、必要な機能が得られますが、複雑になる可能性があり、また、あなたとあなたの顧客をGoogle/Playサービスとそのワークフローとかなり密接に結び付けます。

Mason [5]のようなエンタープライズモバイル展開プラットフォームもご覧ください。あなたの場合、カスタムのAndroid OSを数分で作成し、アプリをキオスクモードでロックします(+カメラ/ SMSの無効化、アプリの削除、設定の非表示などのその他の機能など)メイソンは、要件が変更された場合に管理されるOSおよびアプリの更新もサポートします。

これが便利だと思われる場合は、お気軽にお問い合わせください:trevor @ bymason.com

免責事項:私はメイソンで働いています

8

以前同じ問題に行きました。少なくとも3日間、研究に費やしました。私は多くの解決策を見つけようとしましたが、ゼロを見つけました。

    How I solve is

    1. Up To JellyBean 
     - Use System Alert Dialog (And make it transparent and small size like 2 * 2 And display in some corner(User can't see it)). User can't press home button If there is system Alert dialog

    2. After JellyBean, This method doesn't work. The user can press the home button even though there is System Alert Dialog.
    so what I did is, start the service on stop and start the same activity again and again(within sec). So user can't see any difference.Don't forget to make activity as single task so that even though you start same activity from service, again and again, new activity will not create (So Ugly way )

    - You can simple make screen full screen. make sure in kiosk mode try to check if the screen is in full-screen mode. if not make it full-screen mode(its not hard to do)

    - other way is to make launcher app but when ever you pressed home button it always asked to choose launcher app. if user mistakenly choose default/ other launcher app, this solution doesnt work

    Good luck
0
Ajay Shrestha