2015-04-26 4 views
0

Я создал приложение, которое показывает несколько веб-страниц. Я хочу, чтобы это приложение отображало изображение, которое отображается на этой веб-странице с помощью whatsapp и других мессенджеров IM, поскольку я добавил контекстное меню и внедрил ACTION_SEND, но это не сработало. Когда я пытаюсь поделиться изображением он дает мне ошибку «обмен не удался, пожалуйста, попробуйте еще раз» Вот мой кодОбмен изображения из webview в whatsapp

public class TopRatedFragment extends Fragment { 
private ProgressBar progress; 
private WebView myWebView2; 
private Menu optionsMenu; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 


    String url = "http://images.google.com"; 
    myWebView2 = (WebView) rootView.findViewById(R.id.webViewTop); 
    myWebView2.setWebChromeClient(new myWebViewClient()); 
    myWebView2.getSettings().setJavaScriptEnabled(true); 
    progress = (ProgressBar) rootView.findViewById(R.id.progressBar3); 
    progress.setMax(100); 
    setHasOptionsMenu(true); 
    myWebView2.loadUrl(url); 


    myWebView2.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView View, String url) { 
      View.loadUrl(url); 
      TopRatedFragment.this.progress.setProgress(0); 
      return true; 
     } 
    }); 
    myWebView2.setOnKeyListener(new android.view.View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) { 
       WebView webView = (WebView) v; 

       switch (keyCode) { 
        case KeyEvent.KEYCODE_BACK: 
         if (webView.canGoBack()) { 
          webView.goBack(); 
          return true; 
         } 
         break; 
       } 
      } 

      return false; 
     } 
    }); 
    return rootView; 

} 

@Override 
public void onCreateOptionsMenu(
     Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_main, menu); 
    optionsMenu = menu; 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // handle item selection 
    switch (item.getItemId()) { 
     case R.id.airport_menuRefresh: 

      TopRatedFragment.this.myWebView2.reload(); 
      setRefreshActionButtonState(true); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.add(0, v.getId(), 0, "Call"); 
    menu.add(0, v.getId(), 0, "share image"); 
} 
@Override 
public boolean onContextItemSelected(MenuItem item){ 
    if(item.getTitle()=="Call"){ 
     Toast.makeText(getActivity(), "calling code", Toast.LENGTH_LONG).show(); 
    } 
    else if(item.getTitle()=="share image") 
     { 

     // This is the code which i am using for share intent 
     Intent share = new Intent(android.content.Intent.ACTION_SEND); 
     share.setType("image/*"); 
     share.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageState())); 
     startActivity(Intent.createChooser(share, "Share image using")); 
    }else{ 
     return false; 
    } 
    return true; 
} 

Спасибо за вашу помощь!

ответ

0

Эта линия выглядит странно

share.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageState()));

Поток экстра должен содержать Ури к изображению вы хотите поделиться, но вы устанавливаете его к чему-то, я даже не понимаю, что это должно делать - это даже не оценило бы ури. В настоящее время вы не предоставляете намерение какой-либо информации о том, какой контент вы хотите отправить. Установите поток дополнительно к uris изображения, и все должно быть в порядке.

(Btw вы действительно должны сравнивать строки, используя Equals(), а не ==. И вы не должны определить пункт меню по заголовкам, как он потерпит неудачу, когда локализован и т.д. Используйте пункт меню идентификатора.)

+0

Может ли вы дайте мне один пример? Как добавить uri изображения на свою веб-страницу. – Rahul

+0

Является ли изображение открытым в веб-просмотре или является html-документом, содержащим открытое изображение? Думаю, в этом случае вам нужно проанализировать HTML-код для элемента img и получить src изображения. – JHH

+0

Он открывается в webview не в html-документе. Как я могу это сделать? – Rahul