如何从html文件加载java文件mainactivity.java文件

时间:2013-05-13 11:16:56

标签: android cordova

大家好我正在开发一个Android应用程序,其中我想在html文件上单击一个按钮后加载mainactivity.java文件,我尝试了一个方法,如下面的代码所示,但它要么带我到HTML查看或activit_main代码取决于我提出的评论,我想在我的mainactivity上有facebook登录代码,所以每当用户按下index.html文件中的按钮时,它应该将我重定向到mainactivity然后返回到html .....任何想法如何去做

这是我的主要活动的样本

import android.os.Bundle;
import org.apache.cordova.*;
import android.view.Menu;

public class MainActivity extends DroidGap {
       @Override
       public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  super.loadUrl("file:///android_asset/www/index.html"); 
                  setContentView(R.layout.activity_main);    
       }
}

这是我的界面代码

import android.app.Activity;
import android.content.Context;
import android.content.Intent;

public class ActivityLauncher {
    private Context m_context;

    public ActivityLauncher(Context context) {
        m_context = context;
    }

    public void launchActivity() {
        m_context.startActivity(new Intent((Activity)m_context,
             Activity2.class)); // Here you replace by your activity (ContactUs)
    }
}

最后这就是如何从html调用我的java文件

<body>
    <a href="javascript:Android.launchActivity()">Link</a> 
</body>

2 个答案:

答案 0 :(得分:0)

您无法直接从HTML页面调用Java方法,您必须使用自定义网址并使用WebViewClient

拦截它
<body>
   <a href="custom://launchActivity">Link</a>
</body>

WebViewClient实施中,您必须覆盖shouldOverrideUrlLoading()方法。

此方法的第二个参数是作为String对象提供的url。 如果网址与您在网页中定义的自定义网址相匹配,则可以从WebViewClient返回true 启动新活动。 如果没有,则返回false,以便webview像往常一样处理URL。

public class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        if ("custom://launchActivity".equals(url)) {
            // TODO Launch your activity
            return true;
        }
        // Let the WebView handle the url
        return false;
    }
}

不要忘记将WebViewClient附加到WebView WebView.setWebViewClient()


编辑:我从您的代码中看到您正在使用PhoneGap。这应该在你的问题中更明显。我的答案是原生 Android开发

答案 1 :(得分:0)

你真的很亲密,所有你想念的是一个javascript界面​​:

关于您的主要活动:

public class MainActivity extends DroidGap {
   @Override
   public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              super.loadUrl("file:///android_asset/www/index.html");                  
              ActivityLauncher al = new ActivityLauncher (this);
              appView.addJavascriptInterface(al, "ActivityLauncher"); //Create your interface
   }
}

在您的JavaScript上,您可以使用:

<body>
    <a href="javascript:ActivityLauncher.launchActivity()">Link</a> 
</body>