我的PhoneGap包装,本地托管的Sencha Touch应用程序使一些虚假的URL回调与本机包装器进行通信.(即app_callback://do_function_a).
在iOS中,我实现以下内容
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
Run Code Online (Sandbox Code Playgroud)
检查app_callback://URL,调用本机函数并返回NO(以停止实际发生导航).
我可以在Android中实现等效吗?
提前致谢!
use*_*980 10
@Override
public void onCreate(Bundle savedInstanceState) {
super.setBooleanProperty("showTitle", true);
super.onCreate(savedInstanceState);
//creates super.appView and calls setContentView(root) in DroidGap.java
init();
this.appView.clearCache(true);
this.appView.clearHistory();
this.appView.setWebViewClient(new CordovaWebViewClient(this, this.appView) {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
Log.d("DEBUG", "Should intercept request" +url);
//Implement your code
return super.shouldInterceptRequest(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
Log.d("DEBUG", "onLoadResource" +url);
//Implement your code
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("DEBUG", "On page finished "+url);
//Implement your code
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("DEBUG", "should override url loading "+url);
//Implement your code
return super.shouldOverrideUrlLoading(view, url);
}
});super.loadUrl("file:///android_asset/www/index.html");}
Run Code Online (Sandbox Code Playgroud)
这适用于API版本9-17重要的是还添加onLoadResource
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
this.init();
this.appView.clearCache(true);
this.appView.clearHistory();
this.appView.setWebViewClient(new CordovaWebViewClient(this, this.appView) {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("app://")) {
url = url.replace("app://", "");
Log.d("DEBUG", url);
// DO STUFF
return true;
} else {
//view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
}
});
super.loadUrl("file:///android_asset/www/index.html");
}
}
Run Code Online (Sandbox Code Playgroud)