2014-02-19 49 views
3

當我開始和一個隱含的意圖服務,我得到一個警告:爲什麼使用隱式意圖啓動服務不安全?

隱性意圖與startservice是不是安全:...

爲什麼?

編輯:

我使用的任何其他應用程序應該使用自己的內部類和我的服務沒有出口android:exported="false"

+0

防止碰撞...其他應用程序可能有'服務'接受同樣的意圖行動... –

+0

@GopalRao請參閱編輯。 – dcow

+0

@GopalRao但如果我使用特定於應用程序的類別則不行。 – dcow

回答

10

通過使用Implicit Intents您還沒有指定組件,這意味着組件將由Android通過給定Intent-Action選擇。

使用android:exported="false"將確保其他無法啓動您的服務。但是如果我用BroadcastReeciver編寫了一個應用程序,該應用程序會監聽您的Intent-Action並執行一些惡意工作?

而當我向服務申報服務並使用相同的類別/過濾器/操作時也會發生同樣的情況。

所以用Explicit Intents

+0

我使用了一個內部類別,我有一天會公開。 – dcow

+0

我不在乎你是否添加了一個提取服務意圖的「惡意」應用程序,你打算怎麼做......記錄我的服務啓動時間?你可以問這個系統。我的意圖沒有敏感數據。 – dcow

+0

那就不用擔心了。這只是一個警告,你可以忽略:) –

0

如果您有多個具有相同IntentFilter的服務,系統不知道應該啓動哪個服務,系統也不會要求用戶選擇。