5

この質問は、Lollipop より前の Android バージョンに関するものです。Lollipop API については、関連する質問を確認してください。


次の図に示すように、ステータス バーのシステム アラーム アイコンをオン/オフにする方法を知りたいです。

Android システムのアラーム アイコン

システムについて私が理解していること、および過去に読んだことから、それは組み込みのシステム目覚まし時計アプリによって制御されます。また、ルート化されていないデバイスでは、サードパーティのアプリはそれを制御できません. 私たちがそれを制御できなければならない理由はありません。

ただし、 Timely v1.2.7 は、ルート化されていない Galaxy Nexus v4.2.1 および Nexus 5 v4.4.2 でこのアイコンを制御します。だからそれは可能です。

ルート化されていないデバイスでこれを行うには、どのような手法があるのだろうか。ハッキングまたは文書化されていないコードを疑っていますが、誰かが光を当てることができるかどうかまだ興味があります.

4

1 に答える 1

8

v5 ロリポップ

Lollipop は最終的にこれらのプライベート API 機能を削除しました。この手法は v5 から機能しなくなりました。

特にロリポップに関する新しい質問を投稿しました。これには回答があります。

ロリポップ前

これは、プライベート APIプロパティを使用して行う方法です。

protected void setStatusBarIcon(boolean enabled)
{
    Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED");
    alarmChanged.putExtra("alarmSet", enabled);
    sendBroadcast(alarmChanged);
}

この Google グループ スレッドの Andy Savage に感謝します。


重要な注意:前述のように、これは非公開の文書化されていないプロパティを使用します。同じスレッドで Dianne Hackborn が指摘しているように、通常の警告はすべてこれに当てはまります。

そのような生の文字列 (「android.intent.action.ALARM_CHANGED」および「alarmSet」) が表示された場合、これがプライベート API を使用していることを警告するベルが頭の中で鳴っているはずです。

そして確かにこれはそうです。

これを使用する場合、一部のデバイスでランダムに動作しない場合に将来壊れても驚かないでください。

于 2014-04-16T10:18:54.667 に答える