web-dev-qa-db-ja.com

アプリケーションをセーフモードで動作させることは可能ですか?

Androidインストールされたアプリケーションとシステムアプリケーションを個別にリストするアプリケーションがあります。ユーザーがアプリケーションからデバイスを再起動しようとすると、デフォルトのホームランチャーの代わりにアプリケーションが開きます。

しかし、デバイスが'safe mode'に再起動すると、すべてのロジックがクラッシュします。つまり、デバイスはセーフモードでアプリケーションを再起動しますが、インストールされているアプリケーションをリストせず、動作を停止します。

  1. アプリケーションを'Safe mode'でも動作させることは可能ですか?

  2. 'safe mode'ブロードキャストレシーバーを使用するなど、アプリケーションの実行中にデバイスがRECEIVE_BOOT_COMPLETEDにアクセスするのを防ぐ方法はありますか?

  3. デバイス管理アプリケーションとは何ですか?この状況で役立ちますか?

  4. プログラムでセーフモードを検出することはできますか?

前もって感謝します

20
Devu Soman

私はこの質問が古いことを知っていますが、おそらくこれは誰かを助けるでしょう。アプリケーションがプライマリユーザーのデバイス所有者またはプロファイル所有者である場合、セーフモードを完全に無効にできます(rootなしで機能します)。

DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(getApplicationContext(), DeviceAdminReceiver.class);
// To disable safe boot
manager.addUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);
// To enable safe boot again
// manager.clearUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);

編集:デバイス所有者またはプロファイル所有者をADB経由で簡単に設定できます: https://developer.Android.com/studio/command-line/adb#dpm

adb Shell dpm set-device-owner com.example.deviceownerapp/.DeviceAdminReceiver

デバイス所有者をアクティベートするときは、アカウントを追加してはいけません(ただし、システムリセットを行う必要はありません。設定からすべてのアカウントを削除するだけです)。デバイスの所有者を設定したら、アカウントを再度追加できます。

3
Robyer

これを行う唯一の方法は、ユーザーアプリを/ system/appのシステムアプリにすることです。

しかし、デバイスがルート化されている場合、これを行う簡単な方法があります

  1. ラッキーパッチャーをダウンロードし、ルートアクセスを有効にします

  2. 検索オプションを使用して、セーフモードで使用できるアプリを見つけるか、スクロールメニューで検索します

  3. アプリをクリックし、ツールをクリックしてから/ system/appに移動します

  4. プロセスが完了した後、デバイスを再起動する必要があります

  5. ユーザーアプリにセーフモードでアクセスできるようになりました

1
Sam Moldenha

セーフモードで起動する特定のアプリのショートカットを作成する場合は、セーフモードで起動できます。ただし、ショートカットを作成するときは、通常モードにする必要があります。

1
Abdulatif Salat

デバイス管理アプリも実行しないでください。

アプリをセーフモードで実行するには、ルートアクセス権が必要な/ system/appにアプリをコピーする必要があります。

そのため、ルート化されたデバイスでのみ可能です。

0
Karthik