1

嗨,伙计们,我正在开发一个 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>
4

2 回答 2

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>
于 2013-05-13T12:47:36.843 回答
0

您不能直接从 HTML 页面调用 Java 方法,您必须使用自定义 url 并使用WebViewClient

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

在您的WebViewClient实现中,您必须重写该shouldOverrideUrlLoading()方法。

此方法的第二个参数是作为 String 对象提供的 url。如果 URL 与您在页面中定义的自定义 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到您的WebViewwithWebView.setWebViewClient()


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

于 2013-05-13T11:32:17.103 回答