这是基于Metaio sdk,但不确定问题是否依赖于它。我使用Creator创建了一个基于AREL的基本Android应用程序。在检测到标记时,我想在webview中加载URL。
但是当检测到标记时,我会看到选择打开网址的浏览器的对话框。
如何覆盖它并在我的应用中的webview中打开它?
我尝试使用公共布尔值shouldOverrideUrlLoading(WebView视图,字符串网址),但它没有被调用。
如何确保获取活动尝试打开的所有网址?所以我可以将调用定向到webview ..
在我的活动中,我将其置于onCreate:
mWebView =(WebView)findViewById(R.id.webview); mWebView.setWebViewClient(new WebViewHandler());
并在外面创建:
类WebViewHandler扩展了WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
Log.d("LEE","ping1!!!!!"+url);
mProgress.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url)
{
Log.d("LEE","ping2!!!!!"+url);
mProgress.setVisibility(View.GONE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
Log.d("LEE","Triggered url: !!!!!"+url);
}
}
答案 0 :(得分:0)
你的覆盖错误。您应该在false
结束时返回shouldOverrideUrlLoading()
。这将允许WebView处理请求而不是系统。
答案 1 :(得分:0)
您是否尝试使用arel.Media.openWebsite(url,false)直接在AREL中执行此操作;
http://dev.junaio.com/arel/documentationArelJS/symbols/arel.Media.html#.openWebsite
您可以直接从创建者编辑arel代码
答案 2 :(得分:0)
我通过覆盖ARELInterpreterCallback中的openWebsite()解决了这个问题......
//ARELViewActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.metaio.cloud.plugin.view.WebViewActivity;
import com.metaio.sdk.ARELActivity;
import com.metaio.sdk.jni.IARELInterpreterCallback;
public class ARELViewActivity extends ARELActivity {
protected ARELInterpreterCallback myARELCallback;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myARELCallback = new ARELInterpreterCallback();
if (mARELInterpreter != null)
mARELInterpreter.registerCallback(myARELCallback);
}
@Override
protected int getGUILayout() {
return 0;
}
class ARELInterpreterCallback extends IARELInterpreterCallback
{
@Override
public void onSDKReady()
{
loadARELScene();
}
@Override
public boolean openWebsite(String url, boolean openInExternalApp){
//url is set with arel.Media.openWebsite("template://item#", false); inside logic.js
if (url.contains("template://")) {
if (url.contains("item1")) {
urlSub = url.substring(14, url.length());
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent i = new Intent(ARELViewActivity.this, WebViewActivity.class);
i.putExtra(getPackageName() + ".URL", "http://www.google.com.mx");
startActivity(i);
}
});
return true;
} else {
urlSub = url.substring(14, url.length());
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent i = new Intent(ARELViewActivity.this, WebViewActivity.class);
i.putExtra(getPackageName() + ".URL", "http://www.yahoo.com.mx");
startActivity(i);
}
});
return true;
}
} else {
return false;
//return super.openWebsite(url, openInExternalApp);
}
}
}
}