このクラスを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に入る...エラーが発生することです。