Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将URL从WebView传递到ShareActionProvider?_Android_Webview_Shareactionprovider - Fatal编程技术网

Android 将URL从WebView传递到ShareActionProvider?

Android 将URL从WebView传递到ShareActionProvider?,android,webview,shareactionprovider,Android,Webview,Shareactionprovider,我想在我的WebView中获取用户所在的任何页面,并允许他们与FaceBook/etc共享URL,作为发送意图的一个操作 我试过了,但很明显,onCreateOptions菜单中不存在URL。如何将其移动到OnOptions Items Selected private ShareActionProvider mShareActionProvider; @Override public boolean onOptionsItemSelected(MenuItem item) { // T

我想在我的WebView中获取用户所在的任何页面,并允许他们与FaceBook/etc共享URL,作为发送意图的一个操作

我试过了,但很明显,onCreateOptions菜单中不存在URL。如何将其移动到OnOptions Items Selected

private ShareActionProvider mShareActionProvider;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub


    return super.onOptionsItemSelected(item);
}
   @Override
public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.activity_main, menu);
     MenuItem item = menu.findItem(R.id.menu_item_share);
     mShareActionProvider = (ShareActionProvider)item.getActionProvider();
     mShareActionProvider.setShareHistoryFileName(
       ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
     mShareActionProvider.setShareIntent(createShareIntent());
     return true;   
}
 private Intent createShareIntent() {
      Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("text/plain");
            shareIntent.putExtra(Intent.EXTRA_TEXT, 
          web.getUrl());
            return shareIntent;
        }

上面的代码不起作用,因为在第一次显示选项菜单时,
onCreateOptions菜单
只被调用一次

解决这个问题相当容易。调用
onOptionsItemSelected
时,我们正在构建意图。这是在选择膨胀菜单的任何资源时发生的。如果所选项目是共享资源,则执行
shareURL
,此时将构建并启动意图

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public final boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_item_share:
            shareURL();
    }
    return super.onOptionsItemSelected(item);
}

private void shareURL() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, web.getUrl());
    startActivity(Intent.createChooser(shareIntent, "Share This!"));
}

我没有测试上面的代码示例。既不在实际设备上,也不使用Java编译器。不过,它应该可以帮助您解决问题。

只是一个说明,我的意思是将它传递给OnOptions ItemSelected,以便“url”将有一个值(页面加载后)。谢谢您的回答!我明白你的意思,只是好奇你的意图是什么?我需要在其他地方创建这个吗。编辑:没关系,谢谢你!对不起,是我的错。意图->共享意图