1. 程式人生 > >Android系統通知監聽方案

Android系統通知監聽方案

1.繼承NotificationListenerService類,複寫兩個方法

public class NLService extends NotificationListenerService {
        @Override
        public void onNotificationPosted(StatusBarNotification sbn) {
        }


        @Override
        public void onNotificationRemoved(StatusBarNotification sbn) {
        }
    }


2.在AndroidManifest.xml中註冊Service並宣告相關許可權;
 
   <service android:name=".NLService"
          android:label="@string/service_name"
          android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
     <intent-filter>
         <action android:name="android.service.notification.NotificationListenerService" />
     </intent-filter>
   </service>

3.配置系統級許可權

1 、通過shareduserid來獲取系統許可權

                (1) 在AndroidManifest.xml中新增android:sharedUserId="android.uid.system"

                (2) 在Android.mk檔案裡面新增LOCAL_CERTIFICATE := platform(使用系統簽名)

                (3) 在原始碼下面進行mm編譯,這樣生成的apk能夠獲取system許可權,可以在任意system許可權目錄下面進行目錄或者檔案的建立,以及訪問其他apk

2、使用手機的platform平臺簽名後,能夠獲取到系統許可權。

1>在AndroidManifest.xml設定android:sharedUserId="android.uid.system"。

2>編譯通過後,從eclipse匯出未簽名的SetGPS.apk。

3>使用\out\host\Linux-x86\framework\signapk.jar +\build\target\product\security\platform.pk8 +platform.x509.pem
     把這三個檔案放到同一個檔案中

4>執行“Java -jar signapk.jar platform.x509.pem platform.pk8 SetGPS.apk SetGPSSigned.apk”做平臺簽名得到SetGPSSigned.apk。
   這樣不用root push到system/app/ ,直接 install 安裝後即可使用。

5>編譯通過後,從eclipse匯出未簽名的SetGPS.apk。

4.程式碼增加授權

        Settings.Secure.putString(this.getContentResolver(), "enabled_notification_listeners", 
        new ComponentName(getApplicationContext(), com.example.notification.NotificationMonitorService.class).flattenToString());