[Android] 找出哪個 app 在發送通知 notification
最近 PT 的手機突然出現一些奇怪的發送訊息,
看起來有點像廣告訊息,點下去之後沒什麼反應,
不過後來在手機桌面上發現多跑出來一些 app…
整個感覺上就是裝到了什麼惡意/廣告軟體,
問題是:是哪一個呀?
在網路上找了一下,發現有至少有三種方法可以找出來:
1. 使用 Android 4.1 系統內建的資訊
如果是 Android 4.1 以上的系統的話,恭喜你,
在訊息上面按久一點 > App info 就可以看到是哪個 app 在發送訊息囉~
舉例來說,我想知道訊息列中的 Bluelight Filter 這個訊息是哪個 app 發的,
(它不是惡意/廣告軟體啦,只是拿來舉例)
就可以長按該訊息,就會出現 App info~
選擇 App info 之後,就會跳出來發出此訊息的 app 的資訊囉,
如果確定是惡意或不好的 app 就可以移除了~
以 PT 遇到的例子來說,這種偷偷發送訊息,也不說自己是哪個 app,
然後點了訊息後不徵求同意就擅自在桌面上裝其他的東西的 app,
完全就是個惡意 app,不用考慮立刻移除吧~
2. 使用 app 來偵測是哪個 app 在發送訊息
較多網友推薦的是 AirPush Detector,或是也可以在 Google Play 上搜尋 airpush detect,
這類的 app 應該可以幫忙找出來哪個東西是壞蛋 (即使你的 Android 不是 4.1 以上),
不過我自己是沒有試過啦~
3. 使用 Android SDK 中的 adb 命令來查詢
這是在 StackExchange: How can I find out which app is putting ads in my notification bar? 這邊看到的一種解答,
如果有裝 Android SDK 的話,可以用 adb 的方式來查詢:
adb shell dumpsys notification
下面是執行的一個範例結果:
test@localhost ~/adt-bundle/sdk/platform-tools $ ./adb shell dumpsys notification Current Notification Manager state: Notification List: NotificationRecord{44739078 pkg=jp.ne.hardyinfinity.bluelightfilter.free id=29365a1 tag=null score=0} icon=0x7f020028 / jp.ne.hardyinfinity.bluelightfilter.free:drawable/ic_notification pri=0 score=0 contentIntent=PendingIntent{44597fe8: PendingIntentRecord{443df640 jp.ne.hardyinfinity.bluelightfilter.free startService}} deleteIntent=null tickerText=Filter disabled contentView=android.widget.RemoteViews@42886708 uid=10156 defaults=0x0 flags=0x62 sound=null vibrate=null ledARGB=0x0 ledOnMS=0 ledOffMS=0
老實說這個方法列出來的不是很容易看,像以 BluelightFilter 這個 app 的訊息而言,
手機上看到的是 Tap here to enable filter,但這段文字在 adb 的輸出中沒看到,
只看到它有個 tickerText 是寫 Filter disabled,應該是沒有顯示全部的資訊出來…
因此要從這個 adb 的輸出中找出是哪個 app 會比較麻煩,可能要一一過濾囉~