WebView は、Android 開発でよく使用されるコンポーネントの 1 つで、Web ページのデータを直接渡すことができます。また、ロードされたコンテンツは、js インタラクション、ロードされた Web ページのリンク アドレス情報の取得など、WebView の関連メソッドを通じて処理できます。今日、開発中にWebViewを使用してWebページのデータをロードする小さな機能に遭遇しました。Webページには特定の製品をクリックして、アプリの製品詳細ページにアクセスします。 WebViewClient (WebView view, String url) メソッドで shouldOverrideUrlLoading を使用して、URL 固有の情報を取得して処理します。たとえば、特定の文字のデータの一部をインターセプトしたい場合、処理方法は次のようになります。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
((CustomWebView) view).resetLoadedUrl( );
if(url != null ){
if(url.contains("?method=search¶meter=")){//たとえば、URL に「?method=search¶meter=」が含まれているかどうかを確認したい場合文字をインターセプトして、次の "?method=search¶meter=" Text
int length = "?method=search¶meter=".length();
int Index = url.indexOf("?method=search¶meter="); を取得します。
url = URLDecoder.decode(url);//データのトランスコーディング
String keyWord = url.substring(index+length);//インターセプト操作
バンドルbundle = new Bundle();
Bundle.putString("categoryName", keyWord );
mMainActivity.showActivity(activity, XX.class,bundle );//インターセプトしたデータを指定したページに転送します
return true;
}else
//TODO
return true;
}
}
return false;
}
上記の赤いテキストは最初は追加されておらず、インターセプトされた文字は%や文字などで構成される長い文字列であり、必要な漢字ではありませんでした。後で赤いテキストを追加して取得しました。 「Lenovo Computer」など、私が欲しかった文字。
今日、私は Java API をチェックし、URLDecoder クラスについて学びました:
HTML 形式をデコードするためのユーティリティ クラス。このクラスには、application/x-www-form-urlencoded MIME 形式から文字列をデコードするための静的メソッドが含まれています。
この変換プロセスは、URLEncoder クラスで使用されるプロセスのまったく逆です。エンコードされた文字列内のすべての文字は、「a」から「z」、「A」から「Z」、「0」から「9」、および「-」、「_」、「」のいずれかであると想定されます。 。" 同様に"*"。 「%」文字は使用できますが、特別なエスケープ シーケンスの始まりとして解釈されます。
変換には次の規則が使用されます。
このデコーダには、不正な文字列を処理する 2 つの方法があります。 1 つの方法は、不正な文字を無視することです。もう 1 つの方法は、IllegalArgumentException 例外をスローすることです。デコーダが使用する正確な方法は実装によって異なります。現在使用されている主なメソッドは次のとおりです:
decode(String s, String enc) 指定されたエンコード機構を使用して、application/x-www-form-urlencoded 文字列をデコードします。デコード後にのみ、必要な正しいデータを取得できます。
URLDecoder に関連するクラスは URLEncoder です。このクラスには、文字列から application/x-www-form-urlencoded MIME 形式への変換が含まれています。メイン メソッド: encode(String s, String enc) 指定されたエンコード メカニズムを使用して、文字列を application/x-www-form-urlencoded 形式に変換します。
次回そのような問題に遭遇したときには、解決方法がわかるでしょう。
著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。