サイト移転のお知らせ

しばらくブログお休みしていましたが、こちらに移転しました。よろしければこちらへどうぞ。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Service Killerで停止できるサービス

Service Killer は、基本的にstopService()をコールしてサービスを止めているだけですが、止められるサービスと止められないサービスの解説と、自分での再確認を兼ねて、Androidの保護の仕組みを確認してみました。

 確認作業は、単純なサービスを起動するテスト用のアプリを作り、少しずつ変更しながらService Killerで停止できるかどうか(要は他のアプリからのアクセスが可能かどうか)を確認しました。
 逆に言えば、他のアプリから不用意にアクセスされたくないサービスを作るときの参考にもなるかもしれません。

 確認作業は、単純なサービスを起動するテスト用のアプリを作り、少しずつ変更しながらService Killerで停止できるかどうか(要は他のアプリからのアクセスが可能かどうか)を確認しました。
逆に言えば、他のアプリから不用意にアクセスされたくないサービスを作るときの参考にもなるかもしれません。

 テスト用アプリのサービスのソースはこんな感じ。
 至ってシンプル。トーストを出す以外何もしていません。

 今回重要なのはこちらのAndroidManifest.xml。
 serviceの属性には何も指定していない、最もシンプルとも言えるようなものです。

 なお、Activityは、ボタンを押下すると先のサービスを開始するという至って単純んなものなので割愛しています。

 上記のようなシンプルなサービスですが、残念ながら他アプリからのstopService()では停止できません。
 なぜなら、他アプリからの呼び出しが不可に設定されているためです。
他アプリからの呼び出しの可否は、service要素のexported属性で指定しますが、省略した場合はfalseとして扱われます。(ただし、インテントフィルタを含む場合はデフォルトtrueになるようです。詳細については、こちらhttp://developer.android.com/guide/topics/manifest/service-element.htmlを参照してください。

 では、次に、exported="true"の属性を付けてみます。

 今度は他アプリからのstopService()で停止できました。
要するに、exported="true"ではないサービスはService Killerでは停止できない、ということです。


 ちなみにこのとき、Eclipese上では以下のの警告が出ています。
"Exported service does not require permission"

 なんらかの機能を外部に提供する(exported="true")する場合は、だれでもかれでもアクセス可能にするのではなく、セキュリティの観点からある権限を持ったものからのアクセスのみ許可すべきだと思います。

 では、次にサービスを保護するためにPermissionを追加してみます。
例として、サービスの属性に、android:permission="android.permission.RECEIVE_SMS"を追加します。
こうすることで、同じpermissionを持ったコンポーネント以外からのアクセスを保護できるようになりますが、今回のテストアプリではActivityからServiceを起動しているので、Activityに権限を与えるためにも追加しておきます。

 Service Killer(v1.0.0)は以下のpermissionしか持っていません。
- android.permission.INTERNET
- android.permission.ACCESS_NETWORK_STATE"

 実際動作確認してみると、期待どおりService Killerでは停止できませんでした。

 では、テストアプリのpermissionをServiceKillerが持っているandroid.permission.INTERNET
に変更して見ると、、、やはりService Killerで停止することができました。
 なお、の属性にpermissionが指定されていなくても、親要素のの属性にpermissionが指定されている場合は、その保護が小要素のにも適用されます。

 要するに、Service Killerが利用することを宣言しているpermission以外のpermissionで保護されているServiceは、Service Killerでは停止できない、ということになります。
関連記事
スポンサーサイト

テーマ : Android
ジャンル : 携帯電話・PHS

コメントの投稿

非公開コメント

サイト内検索
プロフィール

Author:imxs

Androidアプリ開発などを行っているimxsの開発者です。気になることを調べてメモって行きます。ほとんどの人にはどうでもいい内容でも、広い世の中一人くらいは同じ疑問を持った奇妙な人がいることを信じつつ。暖かい目で見守ってやってください。
imxsの開発者ブログは移転しました。よろしければこちらへどうぞ。

カテゴリ
最新記事
リンク
RSSリンクの表示
最新コメント
最新トラックバック
FC2カウンター
アクセスランキング
[ジャンルランキング]
携帯電話・PHS
120位
アクセスランキングを見る>>

[サブジャンルランキング]
Android(Google)
34位
アクセスランキングを見る>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。