2013-10-02 55 views
1

我想分享用戶在我的應用程序的webview中查看的網站,但是我遵循的任何教程都只是不起作用。我可以將圖標加載到操作欄中,但不會單擊。我已經實施了onclick聽衆,但目前爲止還沒有。該應用程序僅適用於ICS或更高級別的應用程序,因此它不需要向後兼容較舊的Android。我張貼的代碼是實現任何共享圖標之前,我想從頭開始做,或看看是否任何人有任何想法,我可以做什麼在操作欄中使用圖標設置共享意圖

public class WebActivity extends Activity { 

    private WebView mWebView = null; 
    private EditText mInputUrl = null; 

    /** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
super.onCreate(savedInstanceState); 
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 
setContentView(R.layout.activity_web_view); 

Intent intent = getIntent(); 
String thesite = intent.getStringExtra(MainPage.EXTRA_MESSAGE); 

mInputUrl = (EditText)findViewById(R.id.input_url); 
Button button = (Button)findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String baseurl = "http://"; 
      String url = baseurl + mInputUrl.getText().toString(); 
      mWebView.loadUrl(url); 
     } 
    }); 

mWebView = (WebView) findViewById(R.id.webview); 
mWebView.loadUrl(thesite); 
mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.setWebViewClient(new WebViewClient()); 
mWebView.getSettings().setAllowFileAccess(true); 
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON); 
mWebView.getSettings().setBuiltInZoomControls(true); 
mWebView.getSettings().setLoadWithOverviewMode(true); 
mWebView.getSettings().setUseWideViewPort(true); 
mWebView.getSettings().setGeolocationEnabled(true); 
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

final Activity MyActivity = this; 
mWebView.setWebChromeClient(new WebChromeClient() { 
    public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) { 
     callback.invoke(origin, true, false); 
    } 
public void onProgressChanged(WebView view, int progress) 
{ 
    //Make the bar disappear after URL is loaded, and changes string to Loading... 
    MyActivity.setTitle("Loading..."); 
    MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded 

    // Return the app name after finish loading 
    if(progress == 100) 
     MyActivity.setTitle(R.string.app_name); 
} 
}); 
} 


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
// Check if the key event was the Back button and if there's history 
WebView myWebView = (WebView) findViewById(R.id.webview); 
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
myWebView.goBack(); 
return true; 
} 
// If it wasn't the Back key or there's no web page history, bubble up to the default 
// system behavior (probably exit the activity) 
return super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 
case android.R.id.home: 
    // This ID represents the Home or Up button. In the case of this 
    // activity, the Up button is shown. Use NavUtils to allow users 
    // to navigate up one level in the application structure. For 
    // more details, see the Navigation pattern on Android Design: 
    // 
    // http://developer.android.com/design/patterns/navigation.html#up-vs-back 
    // 
    NavUtils.navigateUpFromSameTask(this); 
    return true; 
} 
return super.onOptionsItemSelected(item); 
} 
} 

編輯

我有使用此代碼嘗試並使其工作,但是當我點擊圖標時,它根本沒有做任何事情。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.share_menu, 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, mWebView.getUrl()); 
startActivity(Intent.createChooser(shareIntent, "Share This!")); 
} 

回答

1

我找到了答案。最後它很簡單。

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

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

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


} 

這也讓我有一個刷新按鈕了。