stackoverflowのおかげで、ロングクリックのコンテキストメニュー/HitTestResultを介して画像を保存できるWebビューを実装することができました。したがって、画像のURLを取得すると、次のようになります。
URL url = new URL(yourImageUrl);
InputStream is = (InputStream) url.getContent();
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = is.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
then put the output.toByteArray() into a FileOutputStream;
「通常の」サイトの場合、これは正常に機能し、画像はSDカードに保存されます。
しかし、私はまだわかりません(そして私はこれを徹底的に検索しました:-(ある種の認証を必要とするサイトの画像をダウンロードする方法。たとえば、サイトを入力してユーザー名/パスワードをフォームに入力します( PHPのようなサーバー側の言語)を使用すると、いくつかの写真が表示されます。Webビューは、ログインしてすべてを表示するのに問題はありませんが、Webビューに存在する認証がに存在しないため、画像を保存できません。私の画像保存メカニズム。
上記のコードを使用すると、URL.getContent()でFileNotFoundExceptionが発生します。次に、HttpClientとHttpGet / HttpResponseを使用しようとしました。ここで、応答は常にコード403です。
私の質問:保護された領域の画像を取得するためにアクセス/ダウンロード/認証するにはどうすればよいですか(サーバー側の言語または基本認証を使用する場合があります)。
つまり...すべてがそこにあり、正しく表示され、WebViewで認証されます:-(しかし、WebViewのコンテンツとURL / Httpリクエストのダウンロード作業との間に関係はありません。WebViewは何らかの方法で認証状態を共有できますか?
WebViewキャッシュから画像をフェッチすることも考えました。すべてがそこにあるからです。(しかし、私もこれを行う方法を見つけることができませんでした...)。どういうわけかWebViewから直接画像を取得するメカニズムはありませんか?
どんな助けにも感謝します!