システムプロパティをセットしてサービスを起動・停止する方法について

3,351 views
Skip to first unread message

ht_nr

unread,
Jun 15, 2011, 9:41:28 PM6/15/11
to Android-SDK-Japan
ht_nrと申します。

システムプロパティをセットしてサービスを起動・停止する方法について現在実現方法を調べていますが、
よくわかりませんでした。

システムプロパティのセットはinitへsocket経由で送信するらしいのですが、具体的な方法をご存じであれば教えてください。

よろしくお願いいたします。

nagamatu

unread,
Jun 15, 2011, 9:58:54 PM6/15/11
to Android-SDK-Japan
libcutilに含まれる property_setによって system propertyを initに対して設定しています。

http://android.git.kernel.org/?p=platform/system/core.git;a=blob;f=libcutils/properties.c;h=547cc6dc5a847f1db06981278e0771f5753ad59e;hb=HEAD#l34

具体的な方法は、property_setおよび send_prop_msgを見れば解ると思います。

--

ht_nr

unread,
Jun 15, 2011, 11:18:07 PM6/15/11
to Android-SDK-Japan
Cですか・・・。Javaでやるものではないのですね。

自作アプリからシステムプロパティをセットしてサービスを起動・停止
したいと考えているのですが、実現方法としては、Cのソースを
コンパイルして組み込み、呼び出すということになるのでしょうか。
(呼び出し方もよくわかっていませんが)

SystemProperties.javaの公開APIがないので困っています。

koba

unread,
Jun 15, 2011, 11:58:36 PM6/15/11
to Android-SDK-Japan
システムプロパティへの値の書き込みはそれ相応の権限が必要です。
一般アプリが使うものではありません。

ht_nr

unread,
Jun 16, 2011, 12:18:45 AM6/16/11
to Android-SDK-Japan
>kobaさんへ

回答ありがとうございます。

それではAndroidのデフォルトのアプリケーションを、移植したり、それをベースに
拡張したアプリを作成することはできないのでしょうか。

l.b.

unread,
Jun 16, 2011, 12:59:26 AM6/16/11
to android-...@googlegroups.com

 村上です。

 SystemProperties.javaを見てもらえれば分かりますが、中ではJNIでNativeの関数を呼んでいるだけです。
 で、呼び先のandroid_os_SystemProperties.cppではnagamatuさんご教示のproperty_get/property_setを
呼んでいます。

 その先はinitの処理を呼んでいますが、この中でuidのチェックをしています。

 端末のプラットフォームを署名した証明書でアプリを署名できるならば、アプリのuidをinitに許可された
uidに設定することで通常アプリからSystemPropertyにアクセス出来るでしょう。
 しかしプリインアプリでも無い限り無理でしょうから、出来ないと考えておいたほうが良いです。

 では。
Reply all
Reply to author
Forward
0 new messages