2013-04-18 91 views
0

我周圍搜索,大部分答案都與靜態圖像相關,即只有一個圖像,並且URL已經預先定義。從WebView中的網站保存圖像?

我有一個WebView設置爲將用戶帶到一個充滿照片的網站。我希望用戶能夠按住圖像並獲得將其保存到手機的選項。那可能嗎?我當然不知道URL或任何東西,因爲這些圖像每天都在變化,而且有很多。

如果有任何區別,網站上的圖片都有自己的頁面。這只是一個包含圖片的網站。不需要認證。就像在桌面上,您可以右鍵單擊並保存圖像,我可以使用WebView來做到這一點嗎?必須有一種方法,因爲它可以在默認瀏覽器中使用。

編輯:我一直在使用被稱爲應用程序「reddit的是樂趣」具有該功能,並在它的面前,它看起來像一個簡單的WebView與行動起來吧,所以我假定這是可能的。

我很感謝這件事的任何幫助。

回答

1

對我想通了。

使用上下文菜單我可以按住圖像來拉它的URL。然後我可以使用DownloadManager啓動下載。這一點是不言自明的,所以我會顯示代碼來獲取圖像的URL。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    // Confirm the view is a webview 
    if (v instanceof WebView) {     
     WebView.HitTestResult result = ((WebView) v).getHitTestResult(); 

     if (result != null) { 
      int type = result.getType(); 

      // Confirm type is an image 
      if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { 
       String imageUrl = result.getExtra(); 
       Toast.makeText(this, imageUrl, Toast.LENGTH_LONG).show(); 

      } 
     } 
    } 
} 
0

我認爲一個很好的解決方案是將JavaScript與WebView.addJavascriptInterface(Object,String)結合使用,以便在渲染圖像和您的活動之間建立「橋樑」。關於這種方法的一個不錯的帖子是here

從本質上講,你應該能夠攔截在通過JavaScript每個圖片網址保持事件,那麼你就應該這樣的信息通過該方法,以做任何你想要發送到您的活動上面。

+0

謝謝隊友我會研究一下。 –

+0

望着這在此刻:http://stackoverflow.com/questions/7963164/context-menu-for-image-saving-in-an-android-webview我會接受你的答案是否合身。 –