2017-12-16 3 views
0

webview의 이미지에서 길게 누르기 다운로드 동작을 사용하고 싶습니다. 저것을 위해 밖으로 시도한 부호는이다 :android WebView에서 이미지에 longpress 액션을 다운로드하는 방법은 무엇입니까?

public void onCreate(Bundle savedInstanceState) { 
     registerForContextMenu(descriptionWebView); 
    } 

    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { 
     WebView.HitTestResult hitTestResult = descriptionWebView.getHitTestResult(); 
     switch (hitTestResult.getType()) { 
     // ... 
     } 
    } 

답변

0

당신은 컨텍스트 메뉴를 위해 yout WebView를 등록 할 필요가있다. yout 활동에서 registerForContextMenu (webView);

및 재정 인, onCreateContextMenu 방법 후

WebView webView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    webView = (WebView)findViewById(R.id.WebView1); 

    webView.getSettings().setJavaScriptEnabled(true); 

    webView.setWebViewClient(new WebViewClient()); 

    registerForContextMenu(webView); 

    webView.loadUrl(HTTP_URL); 
} 

@Override 
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo){ 
    super.onCreateContextMenu(contextMenu, view, contextMenuInfo); 

    final WebView.HitTestResult webViewHitTestResult = webView.getHitTestResult(); 

    if (webViewHitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE || 
      webViewHitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { 

     contextMenu.setHeaderTitle("Download Image From Below"); 

     contextMenu.add(0, 1, 0, "Save - Download Image") 
       .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { 
        @Override 
        public boolean onMenuItemClick(MenuItem menuItem) { 

         String DownloadImageURL = webViewHitTestResult.getExtra(); 

         if(URLUtil.isValidUrl(DownloadImageURL)){ 

          DownloadManager.Request request = new DownloadManager.Request(Uri.parse(DownloadImageURL)); 
          request.allowScanningByMediaScanner(); 
          request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
          DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
          downloadManager.enqueue(request); 

          Toast.makeText(MainActivity.this,"Image Downloaded Successfully.",Toast.LENGTH_LONG).show(); 
         } 
         else { 
          Toast.makeText(MainActivity.this,"Sorry.. Something Went Wrong.",Toast.LENGTH_LONG).show(); 
         } 
         return false; 
        } 
       }); 
    } 
} 

노호 표시하거나이 @Isamil 킬 리치가 너무 짧은 코드를 시도

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    final WebView.HitTestResult result = browser.getHitTestResult(); 
    MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() { 
     public boolean onMenuItemClick(MenuItem item) { 
      // handle on context menu click 
      return true; 
     } 
    }; 

    if (result.getType() == WebView.HitTestResult.IMAGE_TYPE || 
      result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { 

     menu.setHeaderTitle(result.getExtra()); 
     menu.add(0, 666, 0, "Save Image").setOnMenuItemClickListener(handler); 
    } 
} 
+0

대안입니다. 그것은 같은 장소에서 같은 오류를 보여줍니다 –

+0

@SinanKara 올바르게 가져 왔는지 확인하십시오. 이 "import android.webkit.WebView;"가 필요하기 때문에 webViews 용. 테스트를 거쳤으며 작동 중입니다. http://prntscr.com/hoh5oi –

+0

당신이 그것에 대하여 아무것도없는 경우 @Isamil 킬 리치 , 당신은 그래서 난 내 나는 내 대답을 편집 –

관련 문제