我正在尝试在单击WebView组件内的链接时启动Activity。
我的网页浏览已加载到Main.java
内,我想在点击SubActivity.java
中的网站内的链接时启动Main.java
另外,如何将参数传递给此活动?
示例:inspection://Project/1
“检查”是我的应用程序的名称,inspection
是我要启动的活动,1
是我想要的ID。
答案 0 :(得分:12)
您可以使用WebView的addJavaScriptInterface来允许JavaScript控制您的应用程序(在这种情况下,允许JavaScript在单击链接时触发Intent)。
要执行此操作,您需要传递一个类实例以绑定到JavaScript,这可能类似于以下内容:
private final class JsInterface {
public void launchIntent(final String payload) {
Activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// use the payload if you want, attach as an extra, switch destination, etc.
Activity.this.startActivity(new Intent(Activity.this, SomeOtherActivity.class));
}
});
}
}
然后使用以下内容添加到WebView:
webView.addJavascriptInterface(js, "Android");
然后在WebView的JavaScript中,您只需使用新的“Android”对象的“launchIntent”方法。
答案 1 :(得分:0)
一种选择是覆盖网络视图的网址加载,然后选择要启动新活动的点击。在docs中查看子类WebViewClient的使用:
http://developer.android.com/resources/tutorials/views/hello-webview.html
另一种选择是将您的活动绑定到自定义URL方案。这在客户端OAuth中很常见,通常是通过浏览器而不是WebView,但它应该足够相似。这里有一个完整的例子:
https://github.com/brione/Brion-Learns-OAuth
其中展示了如何绑定url方案处理程序以及处理通过它生成的Intent启动(参见OAUTH.java中的onResume())。
答案 2 :(得分:0)
首先在您的网页上添加javascript方法按钮onclick() 下面定义的函数..
function showAndroidToast(toast) {
AndroidFunction.showToast(toast);
}
Android代码适用于javascript界面..
public class MyJavaScriptInterface {
Context mContext;
private Activity activity;
public MyJavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
@JavascriptInterface
public void showToast(String toast){
Intent i=new Intent(getApplicationContext(), Subactivity.class);
i.putExtra("data", "tosecondActivity");
startActivity(i);
}