安卓metaio AREL在应用程序中启动url,而不是外部浏览器



这是基于Metaio sdk的,但不确定问题是否取决于它。我已经使用Creator创建了一个基于AREL的基本Android应用程序。在检测到标记时,我想在网络视图中加载一个url。

然而,当检测到标记时,我会收到选择在哪个浏览器中打开url的对话框。

我如何覆盖它并在我的应用程序的网络视图中打开它?

我尝试使用公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url),但没有被调用。

如何确保获得"活动"试图打开的所有URL?这样我就可以将调用定向到网络视图。。

在我的活动中,我在Create:上有这样的内容

mWebView=(WebView)findViewById(R.id.WebView);mWebView.setWebViewClient(新WebViewHandler());

并且这个外部onCreate:

类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);
    }
}

您的覆盖中有一个错误。您应该在shouldOverrideUrlLoading()结束时返回false。这将允许您的WebView而不是系统来处理请求。

您是否尝试过使用AREL在AREL中直接执行此操作。Media.openWebsite(url,false);

http://dev.junaio.com/arel/documentationArelJS/symbols/arel.Media.html#.openWebsite

您可以直接从创建者处编辑arel代码。

我通过在ARELInterpriseCallback中重写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);
                }
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新