0

このクラスをwebviewclientとして持つwebviewがあります。これは、ページへのリンクをWebビューで開き、ダウンロード可能なファイルへのリンクをデフォルトのブラウザーで開くためです。ここにあります:

class LinkWebView extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.contains("/WS/") | url.contains("/Francesco/")
            | url.contains("/Gabriele/")) {
        try {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            ClubCiprianisActivity cca = new ClubCiprianisActivity();
            cca.comincia(intent);
        } catch (Exception ex) {
            ClubCiprianisActivity cca = new ClubCiprianisActivity();
            cca.tostizza(ex.getMessage());
        }
    } else {
        view.loadUrl(url);
    }
    return true;
}

}

このWebビューは、特定のWebサイトからのURLのみをロードするため、Webビューまたはデフォルトのブラウザーでリンクを開くかどうかを選択する条件は、そのWebサイトに適しています。

ClubCiprianisActivityは、私のアプリケーションに表示される唯一のアクティビティであり、Webビューとその他すべてが含まれます。

ClubCiprianisActivityのメソッドcominciaはこれです:

public void comincia(Intent intent) {
    startActivity(intent);
}

EclipseがwebviewclientクラスのメソッドstartActivityを認識しないため、これを作成する必要がありました。tostizzaは、webviewclientクラスでもトーストを表示できないため、トーストを表示しているだけです。私の問題は、Webページへのすべてのリンクを開くと正常に開きますが、ダウンロード可能なリンクを開こうとすると、shouldoverrideに入る...エラーが発生することです。

4

3 に答える 3

2

アクティビティを手動で開始しないでください。代わりに、LinkWebView クラスでコンストラクターを作成し、このコンストラクターにパラメーターとしてコンテキストを送信してから、context.startActivity(Intent) を呼び出します。

于 2012-04-13T20:44:24.130 に答える
1
context.startActivity(intent);

また

  YourActivityname.this.startActivity(intent);
于 2012-04-13T20:44:32.753 に答える