gpt4 book ai didi

javascript - 使用 Angular 更改 Webview URL

转载 作者:行者123 更新时间:2023-11-30 00:20:37 29 4
gpt4 key购买 nike

我一直在尝试通过 AngularJs 调用一个函数来更改我的 webview URL,但到目前为止我没有成功。

这是我的 Angular 类:

app.controller("speechController", function($scope){
$scope.page = 'index.html';
$scope.url = function(page){
Android.receivePage();
}
});

这是我的 Java 类:

public class MainActivity extends AppCompatActivity {


Button b;
CustomWebViewClient customWebViewClient;
WebView myWebView;
private TextToSpeech tts;
private final int REQ_CODE_SPEECH_INPUT = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);



myWebView = (WebView) findViewById(R.id.webView);
myWebView.addJavascriptInterface(this, "Android");
myWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/index.html");
b= (Button) findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
receivePage();

}
});

}



@JavascriptInterface
public void receivePage() {
myWebView.loadUrl("file:///android_asset/index.html");
}
}

请注意,我在 onCreate 中创建了一个按钮,只是为了调用 receivePage 函数进行测试。通过调试,我注意到 Angular 函数和按钮 onClick 函数都正确地调用了 receivePage(),但是只有按钮正确地更改了 URL。由于项目的需要,我需要使用 angular 来更改 webview。有谁知道为什么我的代码会这样?

最佳答案

我已经弄明白了,所以我会把它贴在这里,以防其他人遇到同样的问题。所以,问题是 JavascriptInteface 使用与 webview 不同的线程,而 webview 只接受同一线程发出的请求,我所要做的就是替换:

@JavascriptInterface
public void receivePage() {
myWebView.loadUrl("file:///android_asset/index.html");
}

与:

@JavascriptInterface
public void receivePage() {
myWebView.post(new Runnable() {
@Override
public void run() {
myWebView.loadUrl("file:///android_asset/index.html");
}
});
}

关于javascript - 使用 Angular 更改 Webview URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368284/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com