首页 文章

Android metaio AREL在app中启动url而不是外部浏览器

提问于
浏览
0

这是基于Metaio sdk,但不确定问题是否依赖于它 . 我使用Creator创建了一个基于AREL的基本Android应用程序 . 在检测到标记时,我想在webview中加载URL .

但是,当检测到标记时,我会看到选择打开URL的浏览器的对话框 .

如何覆盖它并在我的应用程序中的webview中打开它?

我尝试使用公共布尔值shouldOverrideUrlLoading(WebView视图,String url),但它没有被调用 .

如何确保获取活动尝试打开的所有网址?所以我可以将调用定向到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);
    }
}

3 回答

  • 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);
                    }
    
                }
            }
    
        }
    
  • 0

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

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

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

  • 0

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

相关问题