那麼在您的webview
內容:本機代碼發送請求給JS部分,然後JS數據發送回本地。 爲此,您必須在Native中組織一些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);
}
}
在這裏,我們給的Android的一個名稱JavaScriptInterface。 然後在本地是合乎邏輯的添加一些功能發送請求(或數據)的JS(你剛剛經過「的onCreate」將其添加到MainActivity類別):
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");
你越來越在JavaScriptInterface在 「getDataFromJs」 方法的答案。 對你有幫助嗎?
我想在webview中獲取數據,因爲我有登錄系統。如果用戶登錄到我的網站,我想獲取用戶名。 – brave
@brave,我已經更新了我的答案,請檢查它並讓我知道它是否有效 – Mitchapp