すでに、某所にて回答として書いたネタだったりするのですが、結構いろいろできておもしろいので、こちらでも紹介。
そもそもSettings.secureがいじれると何が嬉しい?
私自身、何が嬉しいかはよく知りません(爆)
本来、getすることができてもsetすることはできない設定値をいじれることが嬉しい、ってだけの完全にダメなハッカーです。はい。
一応リファレンス見てみると…
http://developer.android.com/reference/android/provider/Settings.Secure.html
う〜ん、なんかピンと来るもんはないですね。パーミッションさえあればAndroid標準で提供されているAPIを経由して設定できるものが多いです。
WIFI系の設定値で、AP_COUNTとかWATCH_DOGなんとか、みたいなのがある程度でしょうか。
あ、Settings.systemのほうもいじれますよ。念のため。ただ、system設定をいじったところで、そんなにおもしろいことはできないような。。偏見ですが。
どうやっていじるか
Settings.systemとかSettings.secureって、実体は何かって知ってます?
Androidのソースを読むと分かるんですが、結局のところ
/data/data/com.android.providers.settings/databases/settings.dbを、
コンテントプロバイダ経由で読み書きしてるだけなんですね。
root@android:/ #sqlite3 /data/data/com.android.providers.settings/databases/settings.db SQLite version 3.7.2 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .table android_metadata bookmarks system bluetooth_devices secureこんな具合に、root権があると、sqlite使って覗けちゃうんですよね。
ということは! ですよ。
su -c "echo
って、アプリからrootシェルたちあげて実行すれば、putInt(Settings.secureなんちゃら)みたいの書いたりせずとも、ましてや、AndroidManifestでパーミッションを設定していなくても、設定値を読み書きできちゃうんですね。
アイディアとしてはそんな感じです。
実装はここをみてください。SuperUser+su環境でrootシェルを動かすための補助クラスを使って8行程度と、非常に簡単にできてしまうのです。。
あんまりおおっぴらに言ってしまうと、よろしくない内容なので、多くは語りません(^^;;