2011-12-09 12 views
0

ブラウザで特定のURLを開くときに少し問題があります。私はhttp://www.google.comのようなものにGlobals.currentChatURLを設定した場合、それはうまくそのサイトを開き今AndroidウェブブラウザでURLを開くとGoogle検索が発生する

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(Globals.currentChatURL)); 
startActivity(Intent.createChooser(browserIntent, "Select browser:")); 

:まず第一に、私は、ブラウザを起動するには、次のコードを使用します。しかし、私のURLはbase64でエンコードされた複数のパラメータを含んでいるため、少し複雑です。 URLの表示例を次に示します。

http://webportal.mysite.com/ChatProgram/chat.php? intgroup = UFYyMAの== & intid = UFYyMEZN & HG = Pw__ &県=ユーザー& EN = U0NPVFQgTUlMTEFS & EE = cGF1bGdAbWFnbmF0ZWNoLmNvbQ == & EQ = UFRWRkVI & EC = TUFHTkFURUNI

今、私がしようとする私の上記のコードを使用している場合や打ち上げ私は、URLをコピーして、アドレスボックスに貼り付けた場合しかし

を - 「に一致する情報は見つかりませんでした... http://URLaboveの検索」

:このURLには、次のようなメッセージでGoogleの検索ページに私をもたらしますそれは私を適切な場所。どうすればこの問題を解決できますか?これの全ポイントは、ユーザーが手動でURLをコピー&ペーストする必要がなく、ユーザーがボタンとサイトをクリックして起動させることです。

ご意見をいただければ幸いです。

ありがとうございました

答えて

2

http URIのクエリ部分に不要な等号があります。そのような記号は、形の区切り文字として特定の意味を持っています&parameter=value。 この等号は、base64エンコーディングのパディング値(0,1,2)を表します。

あなたのbase64サーバーデコーダがそれらを再構築する気にしませんので、あなたはどちらか

  • は、それらを削除することができ、または

  • percent encodeそれら

    (他のすべての予約文字を含みます)。アンドロイドで

あなたはこの方法パーセントエンコードを使用することができます。

String value = URLEncoder.encode("annoying values with reserved chars &=#", "utf-8"); 
String url = "http://stackoverflow.com/search?q=" + value; 

RFC 2396は非推奨になりましたが、それはthe documentationで述べたようにURI.parseは()に基づいているものです。

uriString RFC 2396に準拠したエンコードされたURI

+0

ありがとうございましたmilliに。素晴らしい作品ですが、はい、廃止されました。 – PaulG

関連する問題