精华内容
下载资源
问答
  • 2017-12-26 13:25:50

    这个错误真的是不可思议。。。流量,自己家的wifi,都没问题,一到公司的公用wifi就报错。。。

    解决办法:将时间制改成24小时

    操作方法:

    仅存在于苹果手机中,在设置->通用->日期和时间->24小时制

       

    如果这个办法还不管用,那就请换个使用人数少点的网络吧 。。。

    更多相关内容
  • 第二步、在弹出来的框点击“设置”,在屏幕分辨率哪里的滚动条“向左或向右移动”移动到你觉适合为止,再点击“应用”查看效果。第...2016-12-07 06:35:01在桌面上双击【我的电脑】 ,在地址栏的下拉按钮找到【控制...

    d530b9af1d4817bf85c72f1837dd4e1d.png

    2016-12-16 12:23:20

    第一步、把鼠标移动到电脑桌面空白处,右键鼠标选择“属性”。第二步、在弹出来的框点击“设置”,在屏幕分辨率哪里的滚动条“向左或向右移动”移动到你觉适合为止,再点击“应用”查看效果。第...

    0489bd614b6e4cedb891d98851bd2b19.png

    2016-12-07 06:35:01

    在桌面上双击【我的电脑】 ,在地址栏的下拉按钮找到【控制面板】打开。 或者你的电脑在开始菜单有设置的话,也可以通过开始菜单找到【控制面板】。 打开控制面板,选择【区域和语言选项...

    265581923dc62dc6825e182ba7551f6e.png

    2017-01-09 15:13:42

    打开开始菜单中的控制面板,找到电源选项并打开,左侧“更改计算机睡眠时间”,把关闭显示器的时间设置你想要的时间即可。待机时间的设定是为了节省电源,让没有处理工作中的部分电脑硬件暂时休...

    dbaa125cfa50be32742768a9a0db35f0.png

    2017-01-04 12:51:40

    1.控件面板--网络和INTERNET--网络和共享中心--更改适配器设置--本地连接(右击)--属性--配置--电源管理;2.把关闭此电源已节约电的勾去掉,这样就可以解除锁定计算...

    41c13d0d0825f45ae7d9ad95501b16ab.png

    2016-12-14 16:43:12

    普通显示器屏幕分辨率调整为1024*768、刷新率为75-85.显示器上面有个枕形失真,调调这个。如果不是显示器问题可能是显卡驱动毛病,更新一下显卡驱动,可以用驱动精灵。如果还是不...

    3e49895c95c6a37ec054f325e68e9e37.png

    2017-03-10 12:59:51

    1、空白桌面上点右键,选择个性化。2、点击右下角的屏幕保护程序进行设置。3、选择你需要的屏幕保护程序。4、如果你选择的屏幕保护程序支持,可以进行效果和内容的设置(点设置进行设置),...

    f8fdc2168520015e748dcc3ff89145c6.png

    2016-11-26 07:59:28

    点击左下角的菜单按钮,在上面选择控制面板。在打开的页面中,选择外观和个性化选项。在任务栏和【开始】菜单栏目下选择自定义【开始】菜单。在打开页面中,点击工具栏。可以看到工具栏下方有个...

    b4620558558ec687df0863737ca8068e.png

    2016-12-11 10:20:16

    进入控制面板; 选择系统与安全选项 箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是; 可以设置自动锁屏时间。

    4d8725bac7b2d007d209755298a16056.png

    2016-12-18 10:20:24

    电脑桌面不显示时间设置点击右下角输入法旁边向上的三角形按钮,然后在弹出的小方框中点击“自定义”。 点击“自定义”后,就打开“通知区域图标”设置对话框,默认的列表中可以设置系统常用工...

    4046a1bbb03b003498bb92f628b17900.png

    2016-11-23 11:18:30

    电脑显示时间的操作--xp设置方法:1、在任务栏上单击右键,选择【属性】。点击显示时钟,点确认就可以了。电脑显示时间的操作--win7设置方法:1、在任务栏上单击右键,选择【属性】...

    11109925d6154549a5f654d1f1618271.png

    2016-12-20 16:41:53

    1、右键点击“我的电脑”或者是“计算机”,选择“管理”   2、找到“设备管理器”   3、找到电脑中的网卡位置:找到“网络适配器”   4、右键正在使用的网卡,点击“属性”...

    27e8ee7fd60100d2ac06f139cade8537.png

    2016-12-30 15:39:23

    你好,显示器屏幕时不时的黑一下,可能是你的显示器屏幕分辨率有问题,可以重现调一下分辩率,也有可能是你的线头接触不良,重现插一下可能就好了。希望我的回答可以帮到你。

    8a00c5571e00994c119db0b2174fb7f6.png

    2016-12-14 16:48:47

    首先根大家介绍用shutdown命令来自动关机,打开开始――运行例如:设置晚上10点整自动关机at22:00shutdown-s例如:设置电脑在2个小时后自动关机shutdown-...

    035592304e682cd13e62e948900155b5.png

    2016-12-11 12:08:13

    进入控制面板,选择系统与安全选项,然后有一个系统与安全可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是,可以设置自动锁屏时间,就可以了,还是非常的方便的...

    ff05bce07bed7b36471f081bffc20d0e.png

    2016-12-09 10:31:34

    点开始----设置----控制面板---区域和语言(98的是区域设置)选项-----自定义----时间----时间格式(T)里的H:mm:ss前加两个tt : ttH:mm:ss ...

    b261bfc3ce084a2ea34dca8f90f3720e.png

    2017-01-28 21:54:19

    开机后显示错误时间(2002年1月2日。。。), 调整到正确时间,但关机再起后依然显示错误的时间。不知是何原因?请朋友们指教。先谢谢了。

    cfc8960bb83f24d5e084c5720f06361f.png

    2017-01-11 01:35:27

    我编了个简单的ASP程序是用记事本编写的

    ASP第一个例子现在时间是:

    71f40d082c212dd2fcbe6ae1268640a1.png

    2017-04-23 10:51:21

    就是一个可以用软件一个可以看网页的那种双显示屏要怎么设置,复制也没关系,只要告诉我是复制显示还是扩展显示还是什么的

    fbe001ac74173d32ad501892efe80de4.png

    2017-07-25 13:24:09

    电脑主机可以运行但屏幕不显示本来那个开显示屏位置的是白灯(可以正常运行)现在变为黄灯了,怎么回事?关了屏幕在开回出现这样的一短英文。求解答

    908a2b003dd187ef67ebbe357627dba6.png

    2017-07-26 09:54:09

    为什么每次打开电脑 ,总是时间显示不对 每次显示都是2009年。有时候更新时间设置,总显示同步时间失败是什么鬼

    展开全文
  • 网上搜索的结果基本上就是说系统时间的问题,把系统时间设置为24小时制就ok了。 可是我照做了,还是没有用 继续上网搜索,还有种说法是可能域名没有备案,可是我们是备案好了的,所以也排除这个可能 没办法,只能再...
  • Android中使用x5内核加载网页的实现

    万次阅读 2018-07-03 19:57:25
    由于是使用的腾讯的浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统。 联系方式 这里用的是TBS腾讯浏览服务。 官网地址是 ...

    前言

    由于是使用的腾讯浏览服务,所以这里大部分介绍的是官网的一些东西,不过自己会做一些复杂使用部分的实现,不至于像官网上介绍的笼统。


    联系方式

    这里用的是TBS腾讯浏览服务。

    官网地址是 https://x5.tencent.com

    微信公众号:腾讯浏览服务

    论坛 http://bbs.mb.qq.com/forum-112-1.html ( 开发者反馈论坛 )

    反馈 http://bbs.mb.qq.com/newthread?fid=112


    背景

    这里介绍一下x5内核相对Android系统内核的一些优势

    • TBS(腾讯浏览服务)的优势

    1) 速度快:相比系统webview的网页打开速度有30+%的提升;
    2) 省流量:使用云端优化技术使流量节省20+%;
    3) 更安全:安全问题可以在24小时内修复;
    4) 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;
    5) 兼容好:无系统内核的碎片化问题,更少的兼容性问题;
    6) 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;
    7) 功能全:在Html5、ES6上有更完整支持;
    8) 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;
    9) 视频和文件格式的支持x5内核多于系统内核;
    10) 防劫持是x5内核的一大亮点

    • 运行环境

    1)手机ROM版本高于或等于2.2版本;
    2)手机RAM大于500M,该RAM值通过手机 /proc/meminfo 文件的MemTotal动态获取
    注:如果不满足上述条件,SDK会自动切换到系统WebView,SDK使用者不用关心该切换过程。

    • SDK尺寸指标

    1)SDK提供的JAR包约250K


    SDK下载

    我们肯定需要先下载sdk的jar包,然后才能使用该sdk的功能,也就是这里的x5内核。

    腾讯浏览服务的sdk下载链接是:腾讯SDK下载页。这里我选择的是第三个(完整版+文件能力的Android SDK),当然选择第一个也可以,只不过不带有文件能力。第二个适用于快速接入TBS且常规使用WebView的开发者。因为我这里可能还涉及到与html网页的交互,为了方便,就没有选择第二个。因为第一个和第三个都只是单纯的将x5的内核替换系统的内核,其他没有太多的变化。像一些基本的设置也都和系统内核的是一样的,只不过x5的内核优势很明显。


    SDK集成

    sdk下载完成后,解压如下图所示:
    这里写图片描述

    里面有文件常见问题解答文档和文件方案接口介绍文档。因为是带有文件能力的sdk,所以有这些文档,文档也比较简单,写的很基础,这里不多介绍了。

    这里我们用到的是jar包,我标注在图中了。将jar包添加到我们的项目中,就可以使用对应的功能了。

    将jar包放到libs目录下:
    这里写图片描述

    然后记得添加jar包依赖,如下:
    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    经过上面几个步骤之后,你的项目就集成了该sdk,可以使用x5的内核了。


    使用

    用到的所有原生WebView导入的类和接口都改导入 com.tencent.smtt.sdk 里面的类,类接口名对应。这样就相当于用x5的内核替换了系统的内核。

    需要注意的是:

    1)请不要在代码里使用下述写法

    import android.*;
    import android.webkit.*;
    import android.webkit.WebStorage.*;
    import android.net.*;
    import android.net.http.*;

    2)除了源码里需要把相关的包名和类名进行替换,布局xml里面的声明也需要替换,例如:

    <com.tencent.smtt.sdk.WebView
    android:id="@+id/forum_context"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" />

    当然,你要是不在布局里面声明,而是自己在代码中new出来,添加的x5内核,那么就不用管xml布局。这里推荐大家用这种方法来实现,会比在xml布局中声明更加的灵活方便。

    替换不完全时,可能发生的问题是关于cookie的身份错误、类转换时的crash等。cookie问题产生的原理是:一段代码把cookie塞给了系统内核,另外一段代码尝试从x5的内核里读取cookie就失败了。类转换的错误产生的原理是:比如xml里指定的是系统的webview,java的代码里把它当作x5的webview使用。

    然后大家自己原来已经用的系统的内核,再替换为x5的内核需要你仔细一点,别忘记替换包名,不然就会发生上面的错误。如果刚开始就使用的就是集成的x5内核,那么就不用太担心,不过选择导包的时候还是需要注意别用系统的内核,要使用腾讯提供的x5内核。

    x5暂时不提供64位so文件,为了保证64位手机能正常加载x5内核,请参照如下链接修改相关配置https://x5.tencent.com/tbs/technical.html#/detail/sdk/1/34cf1488-7dc2-41ca-a77f-0014112bcab7

    AndroidManifest.xml里加入权限声明:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    优化异常上报:

    为了提高合作方的webview场景稳定性,及时发现并解决x5相关问题,当客户端发生crash等异常情况并上报给服务器时请务必带上x5内核相关信息。x5内核异常信息获取接口为:com.tencent.smtt.sdk.WebView.getCrashExtraMessage(context)。以bugly日志上报为例:

    UserStrategy strategy = new UserStrategy(appContext);
      strategy.setCrashHandleCallback(new CrashReport.CrashHandleCallback() {
        public Map<String, String> onCrashHandleStart(int crashType, String errorType, String errorMessage, String errorStack) {
          LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
          String x5CrashInfo = com.tencent.smtt.sdk.WebView.getCrashExtraMessage(appContext);
          map.put("x5crashInfo", x5CrashInfo);
          return map;
        }
        @Override
        public byte[] onCrashHandleStart2GetExtraDatas(int crashType, String errorType, String errorMessage, String errorStack) {
          try {
            return "Extra data.".getBytes("UTF-8");
          } catch (Exception e) {
            return null;
          }
        }
      });
      CrashReport.initCrashReport(appContext, APPID, true, strategy);

    适配修改:

    1) App 首次就可以加载 x5 内核

    App 在启动后(例如在 Application 的 onCreate 中)立刻调用 QbSdk 的预加载接口 initX5Environment ,可参考接入示例,第一个参数传入 context,第二个参数传入 callback,不需要 callback 的可以传入 null,initX5Environment 内部会创建一个线程向后台查询当前可用内核版本号,这个函数内是异步执行所以不会阻塞 App 主线程,这个函数内是轻量级执行所以对 App 启动性能没有影响,当 App 后续创建 webview 时就可以首次加载 x5 内核了

    package com.example.administrator.firststeppro.application;
    
    import android.app.Application;
    
    import com.tencent.smtt.sdk.QbSdk;
    
    /**
     * 自定义MyApplication类继承Application
     * 并重写onCreate方法完成一些初始化加载操作
     */
    public class MyApplication extends Application{
    
        @Override
        public void onCreate() {
            super.onCreate();
            preinitX5WebCore();
        }
    
        /**
         * 预加载x5内核
         */
        private void preinitX5WebCore() {
            if (!QbSdk.isTbsCoreInited()){
                // 这个函数内是异步执行所以不会阻塞 App 主线程,这个函数内是轻量级执行所以对 App 启动性能没有影响
                QbSdk.initX5Environment(this, null);
            }
        }
    }
    

    别忘记在清单配置文件中声明该Application:

    <application
            android:name=".application.MyApplication"
            android:largeHeap="true"
            android:allowBackup="true"
            android:icon="@mipmap/app_icon"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".activity.SplashActivity"
                android:screenOrientation="portrait">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".activity.MainActivity"
                android:windowSoftInputMode="stateHidden|adjustResize"
                android:configChanges="screenSize|orientation|keyboardHidden"
                android:screenOrientation="portrait"/>
    
        </application>

    设置name属性即可。

    2) 目前,由于SDK WebView所提供的WebView类,是对系统WebView的聚合包装,所以:获取系统内核的WebView或者 x5内核的WebView的宽高

    android.webkit.WebView webView = new android.webkit.WebView(this);
    int width = webView.getWidth();

    需要采用下面的方式进行

    com.tencent.smtt.sdk.WebView webView = new com.tencent.smtt.sdk.WebView(this);
    int width = webView.getView().getWidth();

    调整cookie的使用:

    com.tencent.smtt.sdk.CookieManager和com.tencent.smtt.sdk.CookieSyncManager的相关接口的调用,在接入SDK后,需要放到创建X5的WebView之后(也就是X5内核加载完成)进行;否则,cookie的相关操作只能影响系统内核。

    兼容视频播放:

    1)享受页面视频的完整播放体验需要做如下声明:

    页面的Activity需要声明android:configChanges="orientation|screenSize|keyboardHidden"
    

    2)视频为了避免闪屏和透明问题,需要如下设置

    a)网页中的视频,上屏幕的时候,可能出现闪烁的情况,需要如下设置:Activity在onCreate时需要设置:

    getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)
    

    b)在非硬绘手机和声明需要controller的网页上,视频切换全屏和全屏切换回页面内会出现视频窗口透明问题,需要如下设置

    声明当前<item name="android:windowIsTranslucent">false为不透明。
    特别说明:这个视各app情况所需,不强制需求,如果声明了,对体验更有利
    

    c)以下接口禁止(直接或反射)调用,避免视频画面无法显示:

    webview.setLayerType()
    webview.setDrawingCacheEnabled(true);
    

    输入法设置

    避免输入法界面弹出后遮挡输入光标的问题

    方法一:在AndroidManifest.xml中设置

    android:windowSoftInputMode="stateHidden|adjustResize"

    方法二:在代码中动态设置:

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

    app 自定义 UA 的说明

    如果 app 需要自定义 UA,建议采取在 SDK 默认UA 后追加 app UA 的方式示例:

    webSetting.setUserAgentString(webSetting.getUserAgentString() + APP_NAME_UA);
    其中 APP_NAME_UA 是 app 自定义 UA

    由于我们提供的 TBS jar 已经混淆过,所以 App 混淆时可以不再混淆我们的 TBS jar


    代码实现

    下面我给出我自己的项目中使用x5内核加载的网页,顺便也测试一下是否成功的加载了x5内核。

    package com.example.administrator.firststeppro.fragment;
    
    
    import android.Manifest;
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.graphics.Color;
    import android.graphics.PixelFormat;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import android.app.Fragment;
    import android.support.annotation.NonNull;
    import android.view.Gravity;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.tencent.smtt.export.external.extension.interfaces.IX5WebViewExtension;
    import com.tencent.smtt.export.external.interfaces.SslError;
    import com.tencent.smtt.export.external.interfaces.SslErrorHandler;
    import com.tencent.smtt.sdk.WebChromeClient;
    
    import com.tencent.smtt.export.external.interfaces.WebResourceResponse;
    import com.tencent.smtt.sdk.WebSettings;
    import com.tencent.smtt.sdk.WebView;
    import com.tencent.smtt.sdk.WebViewClient;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    import com.example.administrator.firststeppro.R;
    import com.example.administrator.firststeppro.base.BaseFragment;
    import com.example.administrator.firststeppro.orm.AndroidToJs;
    import com.example.administrator.firststeppro.utils.LogUtil;
    import com.example.administrator.firststeppro.utils.ToastUtil;
    
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import me.zhanghai.android.materialprogressbar.MaterialProgressBar;
    
    /**
     * A simple {@link Fragment} subclass.
     * 展示个人的csdn博客主页
     */
    public class PageOneFragment extends BaseFragment {
    
        @BindView(R.id.linear_page1_webview)LinearLayout linear_page1_webiew;// webView的父布局
        @BindView(R.id.material_progress_bar)MaterialProgressBar material_progress_bar;
    
        private boolean isPrepared = false;// 是否已经准备好要加载数据
        private static WebView webView = null;
        private WebSettings webSettings;// WebSettings对象
    
        public PageOneFragment() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_page_one, container, false);
            getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT);// 加载网页视频避免闪屏和透明
            ButterKnife.bind(this, view);
    
            isPrepared = true;
    
            setLazyLoad();
    
            requestPermission();// 申请权限
    
            return view;
        }
    
        @SuppressLint("NewApi")
        private void requestPermission() {
            if(getContext().checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
                // 进行授权
                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            switch (requestCode){
                case 1:
                    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
    
                    }else {
                        ToastUtil.showToast(getContext(), "读写文件权限未开启");
                    }
                    break;
            }
        }
    
    
        /*
        @OnClick({R.id.btn_callJs})
        public void doClick(View view){
            switch (view.getId()){
                case R.id.btn_callJs:// Android调用js方法
                    webView.post(new Runnable() {
                        @Override
                        public void run() {
                            // 调用index.html文件的callJS()方法
    //                        webView.loadUrl("javascript:callJS()");
    
                            // 不同版本兼容4.4以上
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                                webView.evaluateJavascript("index:callJS()", new ValueCallback<String>() {
                                    @Override
                                    public void onReceiveValue(String value) {
                                        // 此处为js返回的结果
                                        LogUtil.e("TAG","" + value);
                                    }
                                });
                            }else {
                                webView.loadUrl("index:callJS()");
                            }
    
                        }
                    });
                    break;
            }
        }
        */
    
        @Override
        protected void setLazyLoad() {
            super.setLazyLoad();
            if (isVisible && isPrepared){
                LogUtil.e("TAG","loadDataPage1");
                if (webView == null){
                    openWebViewPage();
                }
            }
        }
    
        /**
         * 打开webView页面
         */
        private void openWebViewPage() {
            // 创建WebView对象添加到布局中
            webView = new WebView(getContext().getApplicationContext());
    
            IX5WebViewExtension ix5WebViewExtension = webView.getX5WebViewExtension();
            ix5WebViewExtension.setScrollBarFadingEnabled(false);
    
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            webView.setLayoutParams(params);
            linear_page1_webiew.addView(webView);
    
            // 清除网页访问留下的缓存
            // 由于内核缓存是全局的因此这个方法不仅仅针对webView而是针对整个应用程序
            webView.clearCache(true);
    
            // 清除当前webView的访问历史记录
            webView.clearHistory();
    
            // 这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据
            webView.clearFormData();
    
            // https://www.panda.tv/
            // https://blog.csdn.net/csdnzouqi
            // http://soft.imtt.qq.com/browser/tes/feedback.html
    //        String url = "file:android_asset/index.html";// 加载主页面的url
            String url = "http://soft.imtt.qq.com/browser/tes/feedback.html";// 邹奇的博客主页
    
    
            // 获取WebSettings对象
            webSettings = webView.getSettings();
            // 特别注意:5.1以上默认禁止了https和http混用。下面代码是开启
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {// 21
    
            }
            webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);// 不使用缓存,直接用网络加载
            webSettings.setJavaScriptEnabled(true);// webView支持javascript
            webSettings.setJavaScriptCanOpenWindowsAutomatically(true);// 告诉js可以自动打开window
    
            // 两者一起使用,可以让html页面加载显示适应手机的屏幕大小
            webSettings.setUseWideViewPort(true);
            webSettings.setLoadWithOverviewMode(true);
    
            webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
    //        webSettings.setAllowFileAccess(true); //设置可以访问文件
            webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
            webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
    
            // 即允许在 File 域下执行任意 JavaScript 代码
    //        webSettings.setAllowFileAccess(true);// 设置是否允许 WebView 使用 File 协议
            // 禁止 file 协议加载 JavaScript
    //        if (url.startsWith("file://")){
    //            webSettings.setJavaScriptEnabled(false);
    //        }else {
    //            webSettings.setJavaScriptEnabled(true);
    //        }
    
            webSettings.setSavePassword(false);// 关闭密码保存提醒;该方法在以后的版本中该方法将不被支持
    
            webSettings.setDomStorageEnabled(true);// 设置支持DOM storage API
    
            // 通过addJavascriptInterface()将Java对象映射到JS对象
            webView.addJavascriptInterface(new AndroidToJs(getContext()), "androidObj");
    
            // 加载手机本地的html
    //        webView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");
    
            // 加载html页面的一小段内容 ('#','%', '\', '?' 分别用 %23, %25, %27, %3f 替换)
    //        webView.loadData("显示内容", "text/html", "utf-8");
    
            //设置WebViewClient类
            webView.setWebViewClient(new WebViewClient(){
    
                // 设置不用系统浏览器打开,直接显示在当前 webview
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // 如果不是http或者https开头的url,那么使用手机自带的浏览器打开
                    if (!url.startsWith("http://") && !url.startsWith("https://")){
                        try {
                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                            startActivity(intent);
                            return true;
                        }catch (Exception e){
                            e.printStackTrace();
                            return true;
                        }
                    }
                    view.loadUrl(url);
                    return false;
    //                return super.shouldOverrideUrlLoading(view, url);
                }
    
                @Override
                public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
                    super.onReceivedSslError(webView, sslErrorHandler, sslError);
                }
            });
    
    
            //设置WebChromeClient类
    
            webView.setWebChromeClient(new WebChromeClient(){
                @Override
                public void onProgressChanged(WebView view, int newProgress) {
    
                    // 加载完成,隐藏进度条
                    if (newProgress == 100){
                        material_progress_bar.setVisibility(View.GONE);
                    }else {
                        material_progress_bar.setVisibility(View.VISIBLE);
                    }
    
                }
    
                //            // 拦截js的警告框
    //
    //            @Override
    //            public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
    //
                    ToastUtil.showToast(getContext(), "拦截js alert");
    //                new AlertDialog.Builder(getContext())
    //                        .setTitle("弹框")
    //                        .setMessage(message)
    //                        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
    //                            @Override
    //                            public void onClick(DialogInterface dialog, int which) {
    //                                result.confirm();
    //                            }
    //                        })
    //                        .setCancelable(false)
    //                        .create().show();
    //
    //                return true;
                    return super.onJsAlert(view, url, message, result);
    //            }
    //
    //            // 拦截js的确认框
    //            @Override
    //            public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
    //                return super.onJsConfirm(view, url, message, result);
    //            }
    //
    //            // 拦截输入框
    //            @Override
    //            public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
    //
                    ToastUtil.showToast(getContext(), ""+ message);
    //                // 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数)
    //                // 假定传入进来的 url = "js://android?arg1=1&arg2=2"(同时也是约定好的需要拦截的)
    //                Uri uri = Uri.parse(message);
    //
    //                if (uri.getScheme().equals("js")){
    //
    //                    if (uri.getAuthority().equals("android")){
    //                        ToastUtil.showToast(getContext(),"Android端拦截成功!");
    //
    //                        // 可以在协议上带有参数并传递到Android上
                            HashMap<String, String> params = new HashMap<>();
                            Set<String> collection = uri.getQueryParameterNames();
    //
    //                        // 这里可以执行js所需要调用的逻辑
    //
    //                        // 返回值
    //                        result.confirm("Android端返回给js的内容");
    //                    }
    //
    //                }
    //
    //                return true;
                    return super.onJsPrompt(view, url, message, defaultValue, result);
    //            }
            });
    
            // 加载apk包中的html页面
            webView.loadUrl(url);
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
            isPrepared = false;// 视图销毁的时候恢复数据加载状态
        }
    
        @Override
        public void onHiddenChanged(boolean hidden) {
            super.onHiddenChanged(hidden);
            if (!hidden){
                LogUtil.e("TAG", "onHiddenChanged1");
            }
        }
    
    
        // 先让 WebView 加载null内容,然后移除 WebView,再销毁 WebView,最后置空
        private void clearWebView() {
            if (webView != null){
                webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
                webView.clearHistory();
                webView.clearCache(true);// 清除缓存
    
                ((ViewGroup)webView.getParent()).removeView(webView);
                webView.destroy();
                webView = null;
            }
        }
    
        /**
         * fragment的点击事件,参数由当前fragment所依附的activity传过来
         * @param keyCode
         * @param event
         * @param context
         */
        public static void onKeyDown(int keyCode, KeyEvent event, Context context) {
            if (webView != null){
                if (webView.canGoBack()){
                    webView.goBack();
                }else {
                    view_toast_exit = LayoutInflater.from(context).inflate(R.layout.view_toast_exit, null);
                    exitApp(2000, context);
                }
            }
        }
    
        private static Toast toast = null;// 创建Toast对象
        private static long firstTime;// 记录点击返回时第一次的时间毫秒值
        private static View view_toast_exit;// 吐丝,退出应用的view
    
        /**
         * 退出应用
         * @param timeInterval 设置第二次点击退出的时间间隔
         * @param context
         */
        private static void exitApp(long timeInterval, Context context) {
            if(System.currentTimeMillis() - firstTime >= timeInterval){
                if (view_toast_exit != null){
                    toast = new Toast(context);
                    toast.setView(view_toast_exit);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.setDuration(Toast.LENGTH_SHORT);
                    toast.show();
                }else {
                    ToastUtil.showToast(context, "再按一次退出程序");
                }
    
    //            ToastUtil.showToast(this, "再按一次退出程序");
                firstTime = System.currentTimeMillis();
            }else {
                if (toast != null){
                    toast.cancel();
                }
    //            finish();// 销毁当前activity
                System.exit(0);// 完全退出应用
            }
        }
    }
    

    那么怎么判断是否加载了x5内核呢?

    • webview的getX5WebViewExtension()返回非null表示已加载了x5内核webview

    • 您的app打开网页http://soft.imtt.qq.com/browser/tes/feedback.html,显示000000表示加载的是系统内核,显示大于零的数字表示加载了x5内核(该数字是x5内核版本号)

    上面我加载的url就是http://soft.imtt.qq.com/browser/tes/feedback.html,让我们运行一下看看效果:

    这里写图片描述

    可以看到确实是成功的加载了x5的内核。


    A little bit of progress every day!Come on!

    展开全文
  • 其实,在某些特殊的场景下,记录电脑使用者的操作还是很有必要的。比如,银行记录柜员日常操作当作日后规范流程的数据,或者是日后存证;再比如,作为家长记录孩子使用电脑的情况等。 截屏功能的实现 Python有...

    文章首发于我的技术博客:你可以在上面看到更多的Python教程python爬虫

    自动化截屏有什么用呢?为什么要实现自动化截屏呢?其实,在某些特殊的场景下,记录电脑使用者的操作还是很有必要的。比如,银行记录柜员日常操作当作日后规范流程的数据,或者是日后存证;再比如,作为家长记录孩子使用电脑的情况等。

    1. 截屏功能的实现

    Python有个第三方模块叫做PIL(Python 3中PIL停止开发,fork了一个新分支叫Pillow来支持Py3),是用来进行图像处理的,比如,改变图片颜色,进行图片缩放,图片裁剪等等基本图片操作。巧的是,它就包含一个截屏的功能,而且使用起来非常简单,两三行代码即可搞定:

    from PIL import ImageGrab
    
    im = ImageGrab.grab()
    im.save('path-to-save','png')
    

    不巧的是,它只支持Windows和Mac系统,Linux下面却不能用

    1. 自动化不间断截屏

    有了上面简洁的截屏功能,我们可以把它打包成一个简单的函数叫做make_shot(),每次截屏存储为当前时间命名的图片,一天24小时不间断截屏。

    import time
    
    def main():
        while 1:
            make_shot()
            time.sleep(60) # 60秒截一次屏
            # 这里可以把截屏信息存入数据库,方便日后统计
            # 还可以增加一些图像处理算法,自动分析截屏
    

    在这里插入图片描述

    展开全文
  • Make a Screenshot-crx插件

    2021-04-04 14:15:52
    新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 作为一项附加功能,1)捕获整个页面2)捕获页面摘要3)屏幕快照历史记录4)下载,清除,清除所有屏幕快照5)通过Yahoo...
  • 新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 作为一项附加功能,还有:1)捕获整个页面2)捕获页面摘要3)屏幕快照历史记录4)下载,清除,清除所有屏幕快照5)通过...
  • Get a Screenshot-crx插件

    2021-04-04 15:21:04
    新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间屏幕快照功能,1)捕获整个页面2)捕获页面摘录3)屏幕快照历史记录4)下载,清除,清除所有屏幕快照该扩展程序需要以下...
  • 随着EasyNVR软件为越来越多的用户接受和使用,我们也致力于用户的需求收集和需求的调研,发现一部分用户有关于硬件设备的需求,加之我们推出的免费产品EasyNVS云管理平台,可以说用户自己搭建起属于自身的视频直播云...
  • 鱼羊 郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI挤了18站地铁,程序员小王又一次回到了阔别10小时的工位电脑前。晚上并没有睡够,楼下买的鸡蛋灌饼也不合胃口,带着口罩办公也...
  • Java Web程序设计------网页开发基础

    千次阅读 2018-12-20 22:44:08
    hyper text mark language,超文本标记语言,主要通过HTML标记语言对网页的文本、图片、声音等内容进行描述。文件后缀 .html或.htm。 1.&lt;!DOCTYPE&gt;标记,位于文档最前面,用于向浏览器说明当前文档...
  • 挤了18站地铁,程序员小王又一次回到了阔别10小时的工位电脑前。 晚上并没有睡够,楼下买的鸡蛋灌饼也不合胃口,带着口罩办公也一样那么闷。 但看了看项目进度,小王还是强迫自己投入到工作中。 刚敲了一个import,...
  • 网页弹窗代码大全

    千次阅读 2021-06-13 12:24:23
    顺带去我的论坛看看了,^_^ HI,宝贝,来点我撒~~ :-) 4.1、24小时弹出一个窗口的代码 2、可设置同一IP弹出窗口次数和时间的弹窗代码 JS文件 function GetCookie (name) { var arg = name + "="; var alen = arg.length...
  • WEB入门一 网页设计基础

    千次阅读 多人点赞 2017-02-14 13:50:58
    本章简介 在当今社会,网页是网络信息共享和发布的主要形式。而HTML (Hyper Text Mark-up Language),即超文本标记语言,是创建网页基础。本章将学习HTML文档的基本结构、组成HTML文档的各类常见标签。HTML 标签...
  • 版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007...
  • 版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007...
  • 版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007...
  • 代码以显示网页屏幕宽度定义了视窗宽度。网页的比例和最大比例被设置为100%。 留个悬念,因为后面的解决方案中需要重度依赖 meta 标签。 CSS单位rem 在 W3C 规范中是这样描述 rem 的: font ...
  • 新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 作为一项附加功能,1.在夜间模式下,整个页面将逐渐变暗,所有文本颜色也将调整为暗色。 2.在日间模式下,页面和所有文本...
  • esp8266气象时钟+网页控制+OTA升级 可以通过电脑和手机浏览器访问:
  • 响应式网页设计是一种使网站在不同屏幕尺寸上看起来更好的方法。 本课程将向您展示如何使用 CSS 媒体查询(一种内置于所有主要浏览器的关键工具)来构建在笔记本电脑、平板电脑和手机上看起来很棒的设计。 (90分钟...
  • 微软推出的新操作系统Windows 10越来越受到欢迎,用户越来越多,大家是不是会有这样的感觉:同一款电脑,同样的配置,为什么有的人的电脑用起来非常的流畅,而有的人就连打开个网页都卡的要命;有的人的电脑开机快...
  • 在这类系统中, 各类终端之间可以相互通信, 以实现屏幕内容图像(终端设备绘制并显示在屏幕上的视觉内容, 包括网页、邮件、地图、动画、文档和图像等)的分发和处理.与传统自然图像相比, 屏幕内容图像包含的多媒体形式...
  • python 获取网页的内容

    万次阅读 多人点赞 2018-11-07 15:07:16
    我的个人桌面系统用的linuxmint,系统默认没有安装pip,考虑到后面安装requests模块使用pip,所以我这里第一步先安装pip。   1 $ sudo apt install python-pip 安装成功,查看PIP版本:  ...
  • 网页浏览及日常办公达到11小时使用无忧,足以满足用户移动场景下电量需求。 新升级Magic -link 2.0 魔法互传,跨终端智能交互无缝分享 对于日常在传文件、传视频上有大量需求的用户而言,如何快速实现...
  • iphone 手机扫码或者密码登录, 使用WiFi或者4G扫码 登录微信公众号都提示1001错误 ...网上搜索的结果基本上就是说系统时间的问题,把系统时间设置为24小时制就ok了。 可是我照做了,还是没有用 继续上...
  • 小麦苗的常用代码--常用命令(仅限自己使用) 囗 ■ ☑ ● • · ◆ ※ ☆ ★ ⊙ √ → innobackupex--help -? -h help=y sy...
  • 在同一时间使用大量的并发请求该相关的API,要知道一家公司接入SMS网关是需要付“通道费”的,多则1毛,2毛,少则也要几分钱,试想一下10万到20万量级的并发调用连续不停24小时持续几天来调用这些接口那么对于公司来...
  • 从【一键复制网页标题和地址(油猴脚本)】所收获的知识点 文章更新:2021年7月19日15:26:07 前言 我给自己的蓝色小按钮取名为“福妞”,取“用来复(福)制的按钮(妞)”之意。 我是在2021年5月27日左右初步完成...
  • 比如你拍星星的轨迹,就需要很长的曝光时间(可能是几个小时),这样星星的长时间运动轨迹就会在底片上成像。如果你要拍飞驰的汽车清晰的身影就要用很短的时间(通常是几千分之一秒)。曝光时间长的话进的光就多,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,140
精华内容 3,656
关键字:

屏幕使用时间 网页24小时