2013-09-03 20 views
6

Androidブラウザアプリケーションで現在アクセスしているユーザーの現在のURLを取得する方法を探しています。 私は以下の技術を使用してBrowser.BOOKMARKS_URIデータベースからの最後の訪問URLを得ることができることを考え出し:、これに伴う問題Androidブラウザで現在のURLを取得する

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(); 

ユーザーが順番に戻って押したときにBrowser.BOOKMARKS_URIデシベルが更新されないということですブラウザの前のページに移動すると、クエリが不正な結果を返します。

は、次の例を参照してください:

  1. ユーザーは、www.google.comに移動 - >から
  2. ユーザーがwww.imdb.comへナビゲート>クエリを返す "www.google.com"クエリが返す "www.imdb.com"
  3. ユーザーがwww.google.comに戻り押す - >クエリを返す "www.imdb.com"(!!)

ユーザーが表示している正しいURLを返す方法はありますか?

+0

コンテンツリゾルバが期待通りに働いているの許可を必要とする: 'www.google.com'のページをリロードしない背中を押しますが、キャッシュからそれを読み込みます。ユーザーがタブを切り替えると同じことが起こります。履歴には最新の読み込まれたURLが表示されますが、必ずしも表示されるURLではありません。あなたはあなたのアプリに埋め込まれているWebViewの現在のURLを追跡することができます。 –

+0

私は自分のアプリに埋め込まれたWebViewを使っていません。 私はAndroidブラウザアプリケーションの現在のWebページを探しています。 –

+0

私は通常のアプリケーション機能の外にあると思うが、何らかの方法でそれを提供しない限り、通常は別のアプリケーションデータにアクセスすることはできない。 – Nanoc

答えて

0

私はあなたが次のように近づかなかったと思います。一度それを試してみて! ブラウズ履歴には、他のContentProviderの場合と同じ方法でアクセスできます。ブラウズ履歴のほかに、ブックマークのリストを取得することもできます。

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(); 

ます。また、

com.android.browser.permission.READ_HISTORY_BOOKMARKS 
+0

あなたは基本的に私がやっていることと同じことをしています。これは 'Browser.BOOKMARKS_URI'データベースを通過することです。唯一の違いは、私は最新のURLだけを取得し、すべてのURLを取得することです。私の質問で書いたように、 'Browser.BOOKMARKS_URI'データベースは、ユーザーが押した後に現在のURLを保持しません。 –

+0

私は考えている、この操作のためのJQueryモバイルはどうですか? –

+0

JQueryモバイルは私自身のブラウザアプリケーションを書く場合にのみ役立ちますが、私はnative \ chromeアンドロイドブラウザから現在のURLを取得しようとしています。 –

関連する問題