2013-10-18 6 views
4

사용자가 Android에서 열어 본 웹 사이트를 모니터/필터링하고 싶습니다.Android에서 웹 모니터 개발

내가 브라우저 기록에 ContentObserver를 사용하여 (안드로이드 기본 브라우저에서) 마지막 방문 URL을 검색하는 방법을 알고

...

private static class BrowserObserver extends ContentObserver { 
    private static String lastVisitedURL = ""; 
    private static String lastVisitedWebsite = ""; 

    //Query values: 
    final String[] projection = new String[] { Browser.BookmarkColumns.URL }; // URLs 
    final String selection = Browser.BookmarkColumns.BOOKMARK + " = 0"; // history item 
    final String sortOrder = Browser.BookmarkColumns.DATE; // the date the item was last visited 


    public BrowserObserver(Handler handler) { 
     super(handler); 
    } 


    @Override 
    public void onChange(boolean selfChange) { 
     onChange(selfChange, null); 
    } 


    @Override 
    public void onChange(boolean selfChange, Uri uri) { 
     super.onChange(selfChange); 

     //Retrieve all the visited URLs: 
     final Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, projection, selection, null, sortOrder); 

     //Retrieve the last URL: 
     cursor.moveToLast(); 
     final String url = cursor.getString(cursor.getColumnIndex(projection[0])); 

     //Close the cursor: 
     cursor.close(); 

     if (!url.equals(lastVisitedURL)) { // to avoid information retrieval and/or refreshing... 
      lastVisitedURL = url; 

      //Debug: 
      Log.d(TAG, "URL Visited: " + url + "\n"); 
     } 
    } 
} 

내가 사용하는 ContentObserver 등록하려면 :

browserObserver = new BrowserObserver(new Handler()); 
getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, browserObserver); 

을 등록을 취소하려면 :

getContentResolver().unregisterContentObserver(browserObserver); 

이것은 작동합니다. 그러나 이러한 방식으로 브라우저를로드 한 후에 만 ​​URL을 분석 할 수 있습니다.

브라우저가 실제로 Android에서로드하기 전에 URL을 검색하는 방법이 있습니까?

+0

음 .. 왜 -1일까요?! –

답변

1

웹 모니터를 만드는 데 도움이되는 솔루션은 모든 장치 트래픽을 모니터링 할 수 있도록 자체 VPN 서비스를 만드는 것입니다. 이것의 좋은 예가 프로젝트 NetGuard입니다. 일부 장치에서, 시스템은 일부 응용 프로그램 (예, 삼성 기기에, 삼성의 웹 브라우저는 안드로이드 6.0 S5 체크 시스템 VPN을 통해 전달되지 않는 VPN을 통과하지 않습니다

https://github.com/M66B/NetGuard

주).

또한 응용 프로그램에서 VPN 서비스로 사용 권한을 요청해야하지만 사용자가이 권한을 부여하면 대부분의 장치 네트워크 트래픽을 모니터링하고 필터링 할 수 있습니다.