【问题标题】:Sharing image from webview to whatsapp从 webview 共享图像到 whatsapp
【发布时间】:2015-04-26 16:59:56
【问题描述】:

我创建了一个显示多个网页的应用程序。我希望该应用程序与 whatsapp 和其他 IM Messenger 共享显示在该网页上的图像,因为我添加了一个上下文菜单并实现了 ACTION_SEND 但它不起作用。当我尝试分享图片时出现错误“分享失败,请重试”这是我的代码

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;
}

感谢您的帮助!

【问题讨论】:

    标签: java android webview android-studio android-sharing


    【解决方案1】:

    这条线看起来很奇怪

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

    额外的流应该包含您要共享的图像的 uri,但是您将其设置为我什至不明白它应该做什么 - 甚至不会评估为 uri。 目前,您没有向意图提供有关您要发送的内容的任何信息。将流额外设置为图像位置uri,你应该没问题。

    (顺便说一句,你真的应该使用 equals() 而不是 == 来比较字符串。而且你不应该识别标题上的菜单项,因为它在本地化等时会失败。使用菜单项 id。)

    【讨论】:

    • 你能给我举个例子吗?如何将图像的 uri 添加到一个网页。
    • 图片是在webview中打开的还是包含图片的html文档打开了?我想在这种情况下,您必须解析 img 元素的 HTML 并获取图像的 src。
    • 它在 webview 中打开,而不是在 html 文档中。我该怎么做?
    • 如果图像是在 webview 中打开的,那么只需使用 webview.getUrl() 获取 url
    • 代替 Environment.getExternalStorageState()));?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多