1

こんにちは、html ファイルのボタンをクリックした後に mainactivity.java ファイルをロードしたい Android アプリを開発しています。以下のコードに示すように 1 つの方法を試しましたが、html ビューまたは私が付けたコメントに応じてactivit_mainコード、私はメインアクティビティにfacebookログインコードを持ちたいので、ユーザーがindex.htmlファイルのボタンを押すたびに、メインアクティビティにリダイレクトしてから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

HTML ページから Java メソッドを直接呼び出すことはできません。カスタム URL を使用して、WebViewClient

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

WebViewClient実装では、メソッドをオーバーライドする必要がありますshouldOverrideUrlLoading()

このメソッドの 2 番目の引数は、String オブジェクトとして提供される URL です。URL がページで定義したカスタムのものと一致する場合、新しいアクティビティを起動してtrueWebViewClient返すことができます。そうでない場合は、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;
    }
}

を忘れずにwithに添付しWebViewClientてくださいWebViewWebView.setWebViewClient()


編集: あなたのコードから、PhoneGap を使用していることがわかります。これは、質問でより見やすくする必要があります。私の答えは、ネイティブのAndroid 開発です。

于 2013-05-13T11:32:17.103 に答える
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 に答える