4

4.3 でルート化された Nexus 10 を使用しており、次のコードでシステム バーを非表示にすると正常に動作します。

Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79
proc.waitFor();

しかし、次のコードで再表示しようとすると、再表示されません。

Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.android.systemui/.SystemUIService"});
proc.waitFor();

adbシェルから「am」コマンドを発行すると、宣伝どおりに機能します(システムバーが再表示されます)。ルート呼び出しの周りに try/catch があり、例外はありません。「am」から「1」の完了コードを取得します。

非表示と表示は、同じアプリ内の 2 つの異なるアクティビティにありますが、それが問題になる理由はわかりません。

興味のある方のために説明すると、これは、実行中にバーを非表示にし、非表示のメニューからアプリを終了したときに再び表示する必要があるキオスク アプリ用です。

ありがとう!

4

1 に答える 1

4

インターネットで多くの検索を行った後、次のコマンドを使用して、システム バーを非表示にして 4.2 デバイスに表示することができました。

隠れる:

Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");

または、API が 14 未満の場合は 42 ではなく 79 を使用します。SET_DEBUG_APP パーミッションを含める必要がある場合もあります。その場合、アプリケーションをシステム キーで署名するか、/system/app/ ディレクトリにインストールする必要があります。

表示するには:

Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");

別の方法として、(-n の代わりに) -a オプションを使用した人もいますが、これは私のデバイスでエラーを引き起こしていました。

エラーはみつかりません; サービスは開始されていません。

于 2013-10-15T04:55:19.843 に答える