2017-08-29 6 views
4

電話/デバイス管理者から削除されたときに検出できるアプリがあります。 Androidデベロッパーのウェブサイトで検索しましたが、電話/端末管理者のアプリケーションの横にあるチェックボックスをクリックしたときに表示されるフラグや受信機が見つかりませんでした。電話/デバイス管理者からアプリケーションを削除することを検出しました

答えて

0

ブロードキャスト受信機には、次のようなDeviceAdminReceiverクラスから拡張されたコールバック関数があります。ユーザーが非アクティブ化ボタンをクリックすると、この機能はデバイス管理者からアプリを無効にする直前にonDisableRequestedと呼ばれ、ユーザーが無効化をクリックするとonDisabledがコールされます。 まず、デバイスをロックした後、ランチャー(ホームスクリーン)を呼び出さなければなりません。 このロジックを使用すると、ユーザーは非アクティブ化できません。もっと最適化された方法があれば、自由に共有/更新することができます。

@Override 
    public CharSequence onDisableRequested(Context context, Intent intent) { 
      Intent homeScreenIntent = new Intent(Intent.ACTION_MAIN); 
      homeScreenIntent.addCategory(Intent.CATEGORY_HOME); 
      homeScreenIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(homeScreenIntent); 
      DevicePolicyManager deviceManger; 
      deviceManger = (DevicePolicyManager) context.getSystemService(
        Context.DEVICE_POLICY_SERVICE); 
      deviceManger.lockNow(); 
     return context.getString("App won't work if you disable this setting"); 
    } 
+0

あなたがデバイス管理者を削除したときにあなたの質問が*検出された。これは質問に答えません。 – Fred

+0

さらに、ユーザーはデバイス管理者をアンインストールできないため、ユーザーがあなたのアプリをアンインストールできないようになり、デバイスを工場出荷時にリセットすることが強制されます。あなたのアプリの悪いレビューが必要な場合を除き、そうしてはいけません。 – Fred

+0

私の質問は「アプリケーションの検出」が「削除されました」というもので、onDisabled(Context、Intent)関数を答えとして与えたため、あなたの答えは適格ではありませんでした。 onDisableRequestedを使用して、それらが削除されているかどうかを知る必要があります。あなたが話した人は、それが削除されたことを伝えます(削除されることはありません)。あなたの2番目のコメントに加えて、フラグはonDisableRequested関数で設定される必要があります。 –

0

デバイス管理者は、で処理できるユーザーによって無効になったときに、アクションACTION_DEVICE_ADMIN_DISABLEDを受け取ります。 onDisabledメソッド内でDevicePolicyManager特権APIを使用できますが、返された後では使用できません。

+0

しかし、私はそれが私のアプリを無効にしないようにしたい。 onDisabledに何かを書くと、ユーザーはすでにそれを無効にしています。 この機能では、別の機能onDisableRequested(コンテキストコンテキスト、意図インテント)があります。ユーザが無効にする前に警告メッセージなどを書き込むことができます。しかし、私はここで文法的に携帯電話をロックすると、ユーザーが携帯電話のロックを解除した後も同じ画面から続行します。どうすればそれを防ぐことができますか? –

+0

デバイス管理者を無効にしようとすると(onDisabledで)デバイスを消去(工場出荷時の設定)しておくと、保護したいと思うデータはすべて削除されます。 とにかくユーザーがデバイスを消去でき、デバイス管理者が削除される可能性があるため、これが最善の方法です。 – Fred

+0

工場のリセットを防ぐ、工場出荷時のリセット後にデバイスを使用しないなどの強力な機能を探している場合は、デバイスの初期設定時にデバイス所有者モードを設定する必要があります。 [この私の応答](https://stackoverflow.com/a/45632137/4816506)の2つのモードの詳細。 – Fred

関連する問題