帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
44
帖子
0
勋章
197
Y币

[superwebview] 从H5横屏界面进入原生界面会崩溃

[复制链接]
发表于 2018-4-11 17:58:02
本帖最后由 一个冬季 于 2018-4-11 17:58 编辑

我采用的是superWebView开发,我从原生界面进入H5界面会瞬间闪烁以下,我这个H5界面是横屏的。当我从H5界面返回到原生界面时候会发生崩溃的现象,但是没有任何的错误日志信息打印出来。
系统:android  xiaoMi
这个是android的清单文件
  1. <activity android:name=".business.activity.VisualizationHtmlActivity"
  2.             android:screenOrientation="landscape"
  3.             android:theme="@style/H5StyleNotitle"/>
复制代码
H5StyleNotitle:
  1. <style name="H5StyleNotitle" parent="@android:style/Theme.Translucent.NoTitleBar">
  2.     </style>
复制代码
H5页面代码
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport"
  6.           content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  7.     <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  8.     <link rel="stylesheet" href="../css/api.css">
  9.     <link rel="stylesheet" href="../css/common.css">
  10.     <title>可视化</title>
  11. </head>
  12. <body>
  13. <div class="header" id="header">
  14.     <div class="fh_left" onclick="finishWin()"><i></i>可视化</div>
  15. </div>
  16. </body>
  17. <script type="text/javascript" src="../script/api.js"></script>
  18. <script type="text/javascript" src="../script/jquery-3.0.0.min.js"></script>
  19. <script type="text/javascript" src="../script/visualization.js"></script>
  20. <script type="text/javascript">
  21. </script>
  22. </html>
复制代码
JS代码
  1. apiready = function () {
  2.     api.setScreenOrientation({
  3.         orientation: 'landscape_left'
  4.     });
  5.     var header = $api.byId('header');
  6.     api.setStatusBarStyle({
  7.         style: 'light'
  8.     });
  9.     if(api.systemType=='ios'&&api.deviceModel=='iPhone X'){//如果是苹果X
  10.         $api.fixStatusBar(header);//解决IOSX
  11.     }
  12.         api.addEventListener({name: 'keyback'}, function (ret, err) {
  13.             api.toLauncher();
  14.         });
  15. }
  16. /**
  17. * 关闭页面
  18. */
  19. function finishWin() {
  20.     api.closeWin({
  21.         animation: {
  22.             type: "push", //动画类型(详见动画类型常量)
  23.             subType: "from_left", //动画子类型(详见动画子类型常量)
  24.             duration: 300 //动画过渡时间,默认300毫秒
  25.         }
  26.     });
  27. }
复制代码




4
帖子
0
勋章
2750
Y币
用开发工具看下闪退日志,闪退肯定有日志的
44
帖子
0
勋章
197
Y币
求别沉111111111
44
帖子
0
勋章
197
Y币
yvmer336366 发表于 2018-4-11 20:18
用开发工具看下闪退日志,闪退肯定有日志的

昨天我又试了一下,如果我原生界面是竖屏的,然后我需要的H5界面是横屏的。我从H5界面退出到原生就有问题。
44
帖子
0
勋章
197
Y币
求不要沉下去
44
帖子
0
勋章
197
Y币

求不要沉下去。
44
帖子
0
勋章
197
Y币
求不要沉下去。
4
帖子
0
勋章
2750
Y币

你代码是怎么写的?

你写最简单的代码,其他多余的代码都不要多写

使用api.accessNative发起访问native的请求,native中,重写ExternalActivity的onHtml5AccessRequest函数,截获该请求后,根据自己的需求做相应跳转或者其他操作。
44
帖子
0
勋章
197
Y币
yvmer336366 发表于 2018-4-12 10:46
你代码是怎么写的?

你写最简单的代码,其他多余的代码都不要多写

我刚刚按你说的监听H5事件发送的请求后做屏幕旋转的处理。但是问题还是存在,还是当我从横屏的H5界面,返回原生的竖屏界面会发生直接退出APP现象
activity代码

  1. public class VisualizationHtmlActivity extends ExternalActivity {
  2.     private String TAG = VisualizationHtmlActivity.class.getSimpleName();
  3.     String BRSS_PtId, BRSS_UserId, BRSS_Token, BRSS_LoginId;

  4.     @Override
  5.     public void onCreate(Bundle savedInstanceState) {
  6.         super.onCreate(savedInstanceState);
  7.     }
  8.     @Override
  9.     protected boolean onHtml5AccessRequest(WebViewProvider provider, UZModuleContext moduleContext) {
  10.         String requestName = moduleContext.optString("name");
  11.         JSONObject json = new JSONObject();
  12.         if (requestName.equals("UserMessageListener")) {//收到来自H5页面发送的事件
  13.             //设置为横屏
  14.             if(getRequestedOrientation()!= ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
  15.                 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  16.             }
  17.             moduleContext.success(json, true);
  18.         }
  19.         return true;
  20.     }
  21. }
复制代码


js代码

  1. apiready = function () {
  2.    //访问原生
  3.        api.accessNative({
  4.           name: 'UserMessageListener'
  5.        }, function (ret, err) {

  6.        });

  7.     var header = $api.byId('header');
  8.     api.setStatusBarStyle({
  9.         style: 'light'
  10.     });

  11.     if(api.systemType=='ios'&&api.deviceModel=='iPhone X'){//如果是苹果X
  12.         $api.fixStatusBar(header);//解决IOSX
  13.     }

  14. }

  15. /**
  16. * 关闭页面
  17. */
  18. function finishWin() {
  19.     api.closeWin({
  20.         animation: {
  21.             type: "push", //动画类型(详见动画类型常量)
  22.             subType: "from_left", //动画子类型(详见动画子类型常量)
  23.             duration: 300 //动画过渡时间,默认300毫秒
  24.         }
  25.     });
  26. }
复制代码
44
帖子
0
勋章
197
Y币
求不要沉下去
12下一页
您需要登录后才可以回帖 登录

本版积分规则