2013-09-03 20 views
6

Bir kullanıcının android tarayıcı uygulamasında ziyaret ettiği mevcut URL'yi almanın bir yolunu arıyorum. Kullanıcı sırayla geri bastığında bununlaGeçerli URL'yi Android tarayıcıda alma

Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI, 
     Browser.HISTORY_PROJECTION, null, null, 
     Browser.BookmarkColumns.DATE + " DESC"); 
cursor.moveToNext(); 
String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX); 
cursor.close(); 

sorunu, Browser.BOOKMARKS_URI db güncellenen almaz ki: Ben şu tekniği kullanılarak Browser.BOOKMARKS_URI veritabanından son ziyaret edilen URL alabilecek anladım tarayıcıda bir önceki sayfaya gitmek için ve sorgu yanlış sonuçlar verir. - "www.google.com">Sorgu getiri

  • kullanıcı www.imdb.com gider ->

    1. kullanıcı www.google.com gider:

      aşağıdaki örneğe bakın

    2. kullanıcı www.google.com dönmek için geri bastırır Sorgu döner "www.imdb.com" ->Sorgu döner "www.imdb.com" (!!)

    Bir kullanıcının görüntülediği doğru URL’yi nasıl iade edeceği konusunda bir fikri var mı?

  • +0

    içerik çözümleyici beklendiği gibi çalıştığını izin gerekir: 'www.google.com' sayfayı yeniden gelmez geri basına ama önbellekten okur. Kullanıcı sekmeyi değiştirdiğinde de aynı şey olur: geçmiş, görüntülenen en son yüklü URL'yi gösterir. Geçerli URL’yi, uygulamanıza yerleştirilmiş bir Web Görünümünde takip edebilirsiniz. –

    +0

    Uygulamamda gömülü bir WebView ile çalışmıyorum. Android tarayıcı uygulamasının geçerli web sayfasını bulmaya çalışıyorum. –

    +0

    Sanırım normal bir uygulama işlevinin dışında, bir şekilde sağlamazsa başka bir uygulama verilerine erişemezsiniz, tarayıcı geçmişi almak yapabileceğiniz tek şey gibi görünüyor. – Nanoc

    cevap

    0

    Aşağıdaki onayları geçmediğinizi düşünüyorum. bir kez deneyin! Tarama geçmişine, diğer ContentProviders için yaptığınız gibi erişebilirsiniz. Tarama geçmişinin yanı sıra Yer İmleri listesini de alabilirsiniz.

    Cursor webLinksCursor = getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, Browser.BookmarkColumns.DATE + " DESC"); 
    int row_count = webLinksCursor.getCount(); 
    
    int title_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.TITLE); 
    int url_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.URL); 
    
    if ((title_column_index > -1) && (url_column_index > -1) && (row_count > 0)) 
    { 
        webLinksCursor.moveToFirst(); 
        while (webLinksCursor.isAfterLast() == false) 
        { 
         if (webLinksCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) != 1) 
         { 
          if (!webLinksCursor.isNull(url_column_index)) 
          { 
           Log.i("History" , "Last page browsed " + webLinksCursor.getString(url_column_index)); 
           break; 
          } 
         } 
         webLinksCursor.moveToNext(); 
        }    
    } 
    webLinksCursor.close(); 
    

    ve ayrıca

    com.android.browser.permission.READ_HISTORY_BOOKMARKS 
    
    +0

    Temelde, "Browser.BOOKMARKS_URI" veritabanından geçmek için yaptığım aynı şeyi yapıyorsunuz. Tek fark, yalnızca en yeni URL'yi almam ve tüm URL'leri almanız. Ve benim soruma yazdığım gibi, bir kullanıcı geri bastıktan sonra 'Browser.BOOKMARKS_URI' veritabanı mevcut URL'yi tutmuyor. –

    +0

    Bir fikrim var, bu işlem için JQuery mobile hakkında ne düşünüyorsunuz? –

    +0

    JQuery mobile, yalnızca kendi tarayıcı uygulamamı yazabilmemde bana yardımcı olacak, ancak geçerli url'yi yerel \ chrome android tarayıcısından almaya çalışıyorum. –

    İlgili konular