2017-11-17 5 views
0

私は既にwebviewから画像を保存するコードを作成しています。それはトーストメッセージが表示されます、コードは動作しますが、いくつかの問題がありますが、ここで私は画像をクリックしてlongにしようとすると、それは私がそれをクリックすると、画像を保存するためのダイアログメッセージが表示されますwebviewから画像を保存しないでください。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 

     final WebView.HitTestResult result = mWebView.getHitTestResult(); 
     if (result.getType() == WebView.HitTestResult.IMAGE_TYPE || 
       result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { 

      //menu.setHeaderTitle(result.getExtra()); 
      menu.add(0, 1, 0, "Save Image") 
        .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { 
         @Override 
         public boolean onMenuItemClick(MenuItem menuItem) { 

          String DownloadImageURL = result.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) getActivity().getSystemService(Context.DOWNLOAD_SERVICE); 
           downloadManager.enqueue(request); 

           Toast.makeText(getContext(),"Image save successfully.",Toast.LENGTH_SHORT).show(); 
          } 
          else { 
           Toast.makeText(getContext(),"Error to save image.",Toast.LENGTH_SHORT).show(); 
          } 
          return false; 
         } 
        }); 
     } 
    } 

コードにあること画像は、問題は、私は私のギャラリーを開いて、画像を検索しようとしたとき、私はイメージをするので見つけることはありません、である私のstatバーに通知

stat bar notif

保存正常とイエスがあったと言います私のローカルストレージに保存されません。

コードを修正する手助けをしてもらえますか? おかげ

+0

私はこの記事を読んでいます、https://stackoverflow.com/questions/3474448/saving-image-webview-android/3475772#3475772私のコードにこのコードを追加する方法は? –

+0

誰も助けてください、私はこのコードが必要です –

答えて

0

は、上記の方法が全くテストされていませんがString DownloadImageURL = result.getExtra();

public void saveImage(){ 
try { 
    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); 
    } 
    //return output.toByteArray(); 
    Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
} catch (MalformedURLException e) { 
e.printStackTrace(); 
//return null; 
} catch (IOException e) { 
e.printStackTrace(); 
//return null; 
} 
FileOutputStream out = null; 
try { 
    out = new FileOutputStream(filename); //some String filename 
    bm.compress(Bitmap.CompressFormat.PNG, 100, out); // bm is your Bitmap instance 
    // PNG is a lossless format, the compression factor (100) is ignored 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     if (out != null) { 
      out.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

後にonMenuItemClickからこのメソッドを呼び出してみてください。あなたがもう少し助けが必要なように見えたので、私はちょっとグーグルで遊んだ。これがあなたの問題を解決することを願っています。

0

はあなたのコードをテストし、私は多くのエラーを得たが、ストレージ・スキャナは、それらをスキャンすることはありませんので、私すでに私の問題を解決し

ギャラリーは、実際に彼らは私たちのマネージャーであり、ダウンロードした画像を表示することはありません。だから私は、新しい画像がストレージに来たことをストレージに伝えるためにブロードキャストを送信することです。

関連する問題