android本地访问krpano全景注意事项

          公司有几个已经上线的全景的项目,前几天领导对我说需要将其打包成apk,刚开始听到这个需求我是一脸问号


     打包apk,全景不是通过URL访问的吗??然后在深入了解需求,哦原来是离线版。

       做项目,首先就是思路要清晰。我一想不就是全景吗,先将资源导入assets文件下,然后用webView访问一下,听起来很简单、做起来却又有不少坑,下面总结一下

      首先,全景是用krpano做的,当我简单的用

                        webView.loadUrl("file:///android_asset/www/index.html");

      做访问的时候,第一个错误来了:


       不过这个错误也好处理:

                 设置WebView是否允许执行JavaScript脚本

                      webSetting.setJavaScriptEnabled(true);

                     webSetting.setJavaScriptCanOpenWindowsAutomatically(true);

     然后第二个错误来了:


           当他刚刚出来的时候,我不小心点击了他给我的提示,然后我的思路就彻底被带偏了,因为krpano的提示是本地访问目前只支持 Firefox,这不科学。于是我花了大把时间去看krpano官网的文档,唉都是泪,我差点就没把FirefoxAndroid源码弄下来做二次开发了,因为快下班了,我就回去睡了一觉,然后我第二天在看BUG的时候,我注意到了、BUG的大致意思是浏览器不让我访问本地的文件,不让我我访问本地文件!!这时候我突然想到了一个webSetting的方法:

            webSetting.setAllowFileAccessFromFileURLs(true);          是否允许运行在一个URL环境(the context of a file scheme URL)中的JavaScript访问来自其他URL环境的内容,为了保证安全,应该不允许。

        不让我访问,那么让它可以访问不就好了。

            除了这个还有一个注意的地方:进入VR模式的时候按钮事件都触发不了这个时候点击 VR setup,直接SAVE一下就好了,这个现在还不知道为什么,有知道是什么原因的留言给我一下,谢谢了

       下面是webiew的代码:

public class WebActivity extends AppCompatActivity {
    private static final String TAG = "WebActivity";

    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
        setContentView(R.layout.activity_web);
        webView = (WebView) findViewById(R.id.web_web);
        initWebViewSettings();
        webView.loadUrl("file:///android_asset/www/index.html");
    }

    private void initWebViewSettings() {
        WebSettings webSetting = webView.getSettings();
        webSetting.setJavaScriptEnabled(true);
        webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
        webSetting.setPluginState(WebSettings.PluginState.ON);
        webSetting.setAllowFileAccess(true);
        webSetting.setNeedInitialFocus(true);
        webSetting.setLoadsImagesAutomatically(true);
        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSetting.setSupportZoom(true);
        webSetting.setBuiltInZoomControls(true);
        webSetting.setUseWideViewPort(true);
        webSetting.setSupportMultipleWindows(true);
        webSetting.setLoadWithOverviewMode(true);
        webSetting.setAppCacheEnabled(true);
        webSetting.setDatabaseEnabled(true);
        webSetting.setDomStorageEnabled(true);
        webSetting.setGeolocationEnabled(true);
        webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
        webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
        //新加的
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            webSetting.setAllowUniversalAccessFromFileURLs(true);
        }
        webSetting.setAllowFileAccessFromFileURLs(true);
        webSetting.setAllowUniversalAccessFromFileURLs(true);
    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值