を使用してwebview
のコンテンツを読み込むことができますまあ、私は2つの段階でこれをやっている:ネイティブコードはJS部分に要求を送信し、その後、JSは、ネイティブにデータを送り返します。 これは、ネイティブでいくつかのJSインターフェイスを整理し、それをあなたの "onCreate"に追加する必要があります。あまり複雑ではありません。 JSインタフェース:
public class JavaScriptInterface {
Context mContext;
private GoogleApiClient client;
public JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void getDataFromJs(String divData){
//here is your code
}
}
今、あなたは、このような "のonCreate" に追加することができます:ここでは
public class MainActivity extends AppCompatActivity {
public static WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://website.com";
view = (WebView) this.findViewById(R.id.webView);
view.getSettings().setJavaScriptEnabled(true);
view.setWebChromeClient(new WebChromeClient());
view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
view.getSettings().setBlockNetworkImage(false);
view.getSettings().setAllowFileAccess(true);
view.getSettings().setAllowFileAccessFromFileURLs(true);
view.getSettings().setAllowUniversalAccessFromFileURLs(true);
view.addJavascriptInterface(new JavaScriptInterface(this), "Android");
view.loadUrl(url);
}
}
我々はJavaScriptInterfaceへのAndroidの名前を与えたこれはコードです。 はその後、ネイティブに(あなただけ「のonCreate」の後MainActivityクラスにそれを追加する必要があります)JSへの要求(またはデータ)を送信するいくつかの機能を追加するために論理的な次のようになります。
public static String sendToJS(final String inStr, final String address) {
final String sendStr = String.format("javascript:%s('%s')", address, inStr.toString());
String response = "";
try {
view.post(new Runnable() {
@Override
public void run() {
view.loadUrl(sendStr);
}
});
response = sendStr;
}catch(Exception e){
response = e.getMessage();
}
return response;
}
とJSで対処します機能:
function myFunction(inData){
//your code cares about inData if you need it
var outData = document.getElementById("test").innerHTML;
Android.getDataFromJs(outData);
}
そして最後に(ネイティブから)用法:
sendToJS("yourStringData", "myFunction");
あなたが "getDataFromJs" 方式でJavaScriptInterfaceになっている答え。 あなたにとって有益ですか?
私はログインシステムを持っているので、webviewでデータを取得したい。ユーザーが自分のサイトにログインしている場合は、ユーザー名を取得したい – brave
@brave、私は私の答えを更新しました、それをチェックし、それが動作するかどうかお知らせください。 – Mitchapp