0

ルート化されたデバイスからアプリにアクセスできないように、 Titanium Backupアプリなどのルート化されたデバイスでアプリケーションをフリーズ/フリーズ解除するにはどうすればよいですか。デバイスがルート化されているかどうかを追跡する方法はありますか?

4

2 に答える 2

4

RootTools ライブラリを使用して無効化/有効化コマンドを実行しています

CommandCapture command_enable = new CommandCapture(0,"pm enable "+ Package_Name);                           
RootTools.getShell(true).add(command_enable).waitForFinish();

CommandCapture command_disable = new CommandCapture(0,"pm disable "+ Package_Name);
RootTools.getShell(true).add(command_disable).waitForFinish();
于 2013-02-26T08:47:18.723 に答える
1

実際にrootコマンドを実行して応答をキャッチし、デバイスがルート化されているかどうかを判断することができます。

ここからコードを取得し、ニーズに合わせて少し変更すると、次のようになります。

public static boolean canRunRootCommands()
       {
          boolean retval = false;
          Process suProcess;

          try
          {
             suProcess = Runtime.getRuntime().exec("su");

             DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
             DataInputStream osRes = new DataInputStream(suProcess.getInputStream());

             if (null != os && null != osRes)
             {
                retval = true;

                /*
                 *if got to this point, its safe to assume the 
                 *device is rooted and here you can do something 
                 *to tell your app that su is present. Or you could 
                 *use the bool return of this function to know that the 
                 *device is rooted and make the app act different.
                 */

             }
          }
          catch (Exception e)
          {
             // Can't get root !
             // [...] meaning that the device is not rooted

             retval = false;
          }

          return retval;
       }

私はこれをテストしていませんが、きっとあなたを助けるでしょう。または、少なくともそれはあなたを正しい方向に向けます。

于 2013-02-25T09:25:41.677 に答える