4

Android デバイスのデフォルトのロック画面 (スワイプしてロック解除) を置き換えるアプリケーションに取り組んでいます。キーガードマネージャーを無効にし、画面オフと画面オンの意図のためにブロードキャストレシーバーを使用してアクティビティを表示することで、これを成功させました。さて、問題は、何らかの理由でデフォルトの画面ロックを再度設定すると、強制的に閉じて再度起動しない限り、アプリケーションがキーガードを無効にしないことです。

      km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
      if( km.inKeyguardRestrictedInputMode()) {
       //it is locked
          km = (KeyguardManager) getApplicationContext().getSystemService(KEYGUARD_SERVICE);
      kl=km.newKeyguardLock("com.example.helloworld.MainActivity");
      kl.disableKeyguard();
      } else {
          Intent i = getIntent();
          i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          getApplicationContext().startActivity(i);
      }
4

2 に答える 2

4

ロック画面をユーザーアプリに置き換えることはできません。あなたがすることはすべてハックであり、一部のデバイスでは機能する場合と機能しない場合があり、新しいリリースで機能しなくなる可能性があります. 画面ロックのように見えるものを作成できますが、そのようには機能しません。さらに、Android の最近のバージョン (ICS 以降) では、画面のロックを解除すると、資格情報ストレージのロックを解除するなどの余分な処理が行われますが、これはアプリが実行できない可能性があります (システム権限がないため)。

本当に画面ロックを交換したい場合は、独自の Android ROM を構築し、ストックのものを変更/交換する必要があります。

于 2012-10-18T02:39:29.410 に答える
4

受け入れられた回答は古くなっている可能性があります。

その結果、理論的には、アプリで生成されたパスワードを使用して実際のロック画面を保護し (実際のセキュリティを提供)、Android ロック画面の上にカスタム ロック画面を浮かせ、適切なパスワードが提供された場合にロックを解除して閉じることが可能です。実際のロック画面。最後に、レシーバーを使用して、SCREEN_OFF や SCREEN_ON などの関連イベントでパスワードを復元またはクリアします。後者は、タイムアウトに達していない場合、パスワードを自動的にクリアできます。

FWIW、クラッシュまたはアンインストールにより、ユーザーが知らないパスワードでデバイスがロックされたままになるため、このアプローチはお勧めしません。

于 2015-06-08T15:49:50.470 に答える