-
2017-12-26 13:25:50
这个错误真的是不可思议。。。流量,自己家的wifi,都没问题,一到公司的公用wifi就报错。。。
解决办法:将时间制改成24小时
操作方法:
仅存在于苹果手机中,在设置->通用->日期和时间->24小时制
如果这个办法还不管用,那就请换个使用人数少点的网络吧 。。。
更多相关内容 -
电脑屏幕显示时间设置_电脑屏幕的显示时间
2021-06-16 06:40:26第二步、在弹出来的框点击“设置”,在屏幕分辨率哪里的滚动条“向左或向右移动”移动到你觉适合为止,再点击“应用”查看效果。第...2016-12-07 06:35:01在桌面上双击【我的电脑】 ,在地址栏的下拉按钮找到【控制...2016-12-16 12:23:20
第一步、把鼠标移动到电脑桌面空白处,右键鼠标选择“属性”。第二步、在弹出来的框点击“设置”,在屏幕分辨率哪里的滚动条“向左或向右移动”移动到你觉适合为止,再点击“应用”查看效果。第...
2016-12-07 06:35:01
在桌面上双击【我的电脑】 ,在地址栏的下拉按钮找到【控制面板】打开。 或者你的电脑在开始菜单有设置的话,也可以通过开始菜单找到【控制面板】。 打开控制面板,选择【区域和语言选项...
2017-01-09 15:13:42
打开开始菜单中的控制面板,找到电源选项并打开,左侧“更改计算机睡眠时间”,把关闭显示器的时间设置你想要的时间即可。待机时间的设定是为了节省电源,让没有处理工作中的部分电脑硬件暂时休...
2017-01-04 12:51:40
1.控件面板--网络和INTERNET--网络和共享中心--更改适配器设置--本地连接(右击)--属性--配置--电源管理;2.把关闭此电源已节约电的勾去掉,这样就可以解除锁定计算...
2016-12-14 16:43:12
普通显示器屏幕分辨率调整为1024*768、刷新率为75-85.显示器上面有个枕形失真,调调这个。如果不是显示器问题可能是显卡驱动毛病,更新一下显卡驱动,可以用驱动精灵。如果还是不...
2017-03-10 12:59:51
1、空白桌面上点右键,选择个性化。2、点击右下角的屏幕保护程序进行设置。3、选择你需要的屏幕保护程序。4、如果你选择的屏幕保护程序支持,可以进行效果和内容的设置(点设置进行设置),...
2016-11-26 07:59:28
点击左下角的菜单按钮,在上面选择控制面板。在打开的页面中,选择外观和个性化选项。在任务栏和【开始】菜单栏目下选择自定义【开始】菜单。在打开页面中,点击工具栏。可以看到工具栏下方有个...
2016-12-11 10:20:16
进入控制面板; 选择系统与安全选项 箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是; 可以设置自动锁屏时间。
2016-12-18 10:20:24
电脑桌面不显示时间设置点击右下角输入法旁边向上的三角形按钮,然后在弹出的小方框中点击“自定义”。 点击“自定义”后,就打开“通知区域图标”设置对话框,默认的列表中可以设置系统常用工...
2016-11-23 11:18:30
电脑显示时间的操作--xp设置方法:1、在任务栏上单击右键,选择【属性】。点击显示时钟,点确认就可以了。电脑显示时间的操作--win7设置方法:1、在任务栏上单击右键,选择【属性】...
2016-12-20 16:41:53
1、右键点击“我的电脑”或者是“计算机”,选择“管理” 2、找到“设备管理器” 3、找到电脑中的网卡位置:找到“网络适配器” 4、右键正在使用的网卡,点击“属性”...
2016-12-30 15:39:23
你好,显示器屏幕时不时的黑一下,可能是你的显示器屏幕分辨率有问题,可以重现调一下分辩率,也有可能是你的线头接触不良,重现插一下可能就好了。希望我的回答可以帮到你。
2016-12-14 16:48:47
首先根大家介绍用shutdown命令来自动关机,打开开始――运行例如:设置晚上10点整自动关机at22:00shutdown-s例如:设置电脑在2个小时后自动关机shutdown-...
2016-12-11 12:08:13
进入控制面板,选择系统与安全选项,然后有一个系统与安全可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是,可以设置自动锁屏时间,就可以了,还是非常的方便的...
2016-12-09 10:31:34
点开始----设置----控制面板---区域和语言(98的是区域设置)选项-----自定义----时间----时间格式(T)里的H:mm:ss前加两个tt : ttH:mm:ss ...
2017-01-28 21:54:19
开机后显示错误时间(2002年1月2日。。。), 调整到正确时间,但关机再起后依然显示错误的时间。不知是何原因?请朋友们指教。先谢谢了。
2017-01-11 01:35:27
我编了个简单的ASP程序是用记事本编写的
ASP第一个例子现在时间是:2017-04-23 10:51:21
就是一个可以用软件一个可以看网页的那种双显示屏要怎么设置,复制也没关系,只要告诉我是复制显示还是扩展显示还是什么的
2017-07-25 13:24:09
电脑主机可以运行但屏幕不显示本来那个开显示屏位置的是白灯(可以正常运行)现在变为黄灯了,怎么回事?关了屏幕在开回出现这样的一短英文。求解答
2017-07-26 09:54:09
为什么每次打开电脑 ,总是时间显示不对 每次显示都是2009年。有时候更新时间设置,总显示同步时间失败是什么鬼
-
微信公众号扫码登录 提示 网路出错了, 轻触屏幕重新加载-1001错误
2021-01-06 18:33:28网上搜索的结果基本上就是说系统时间的问题,把系统时间设置为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实现自动化截取Windows系统屏幕
2019-03-12 14:46:00其实,在某些特殊的场景下,记录电脑使用者的操作还是很有必要的。比如,银行记录柜员日常操作当作日后规范流程的数据,或者是日后存证;再比如,作为家长记录孩子使用电脑的情况等。 截屏功能的实现 Python有...自动化截屏有什么用呢?为什么要实现自动化截屏呢?其实,在某些特殊的场景下,记录电脑使用者的操作还是很有必要的。比如,银行记录柜员日常操作当作日后规范流程的数据,或者是日后存证;再比如,作为家长记录孩子使用电脑的情况等。
- 截屏功能的实现
Python有个第三方模块叫做PIL(Python 3中PIL停止开发,fork了一个新分支叫Pillow来支持Py3),是用来进行图像处理的,比如,改变图片颜色,进行图片缩放,图片裁剪等等基本图片操作。巧的是,它就包含一个截屏的功能,而且使用起来非常简单,两三行代码即可搞定:
from PIL import ImageGrab im = ImageGrab.grab() im.save('path-to-save','png')
不巧的是,它只支持Windows和Mac系统,Linux下面却不能用
- 自动化不间断截屏
有了上面简洁的截屏功能,我们可以把它打包成一个简单的函数叫做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... -
My Screen Grab Extension-crx插件
2021-04-04 23:17:30新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 作为一项附加功能,还有:1)捕获整个页面2)捕获页面摘要3)屏幕快照历史记录4)下载,清除,清除所有屏幕快照5)通过... -
Get a Screenshot-crx插件
2021-04-04 15:21:04新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 屏幕快照功能,1)捕获整个页面2)捕获页面摘录3)屏幕快照历史记录4)下载,清除,清除所有屏幕快照该扩展程序需要以下... -
EasyNVR智能云终端硬件盒子x86版自我维护之摄像机网页直播系统基础运维
2019-05-10 20:52:42随着EasyNVR软件为越来越多的用户接受和使用,我们也致力于用户的需求收集和需求的调研,发现一部分用户有关于硬件设备的需求,加之我们推出的免费产品EasyNVS云管理平台,可以说用户自己搭建起属于自身的视频直播云... -
软妹音程序员鼓励师24小时在线,只需一个VSCode插件,还能帮忙吐槽产品经理...
2020-06-20 12:28:30鱼羊 郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI挤了18站地铁,程序员小王又一次回到了阔别10小时的工位电脑前。晚上并没有睡够,楼下买的鸡蛋灌饼也不合胃口,带着口罩办公也... -
Java Web程序设计------网页开发基础
2018-12-20 22:44:08hyper text mark language,超文本标记语言,主要通过HTML标记语言对网页的文本、图片、声音等内容进行描述。文件后缀 .html或.htm。 1.<!DOCTYPE>标记,位于文档最前面,用于向浏览器说明当前文档... -
一个VSCode插件实现软妹音程序员鼓励师24小时在线,还能吐槽PM
2020-06-25 17:44:00挤了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 标签... -
针式PinPKM-V201506(免费无使用限制)
2015-10-18 11:25:51版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007... -
针式PinPKM-V201502(免费无使用限制)
2015-10-18 11:24:30版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007... -
PinPKM-V201525(官网发布的最后一个免费无使用限制版本)
2015-11-08 09:58:08版本3.8.0 更新时间:2007-9-24 增加集成“百度桌面搜索” 新的帮助文件 结合使用经验 和用户反馈完善多处功能和一些Bug 版本3.3.0更新时间:2007-8-17 改为绿色软件,下载后解压即可运行 版本3.2.0更新时间:2007... -
使用Flexible.js实现手机端网页内容适配(rem适配法)
2018-01-31 15:18:32代码以显示网页的屏幕宽度定义了视窗宽度。网页的比例和最大比例被设置为100%。 留个悬念,因为后面的解决方案中需要重度依赖 meta 标签。 CSS单位rem 在 W3C 规范中是这样描述 rem 的: font ... -
Screen Dimmer Extension-crx插件
2021-04-04 14:40:02新选项卡中还有一个数字时钟,您可以根据自己的喜好以12小时/ 24小时格式查看当前位置时间。 作为一项附加功能,1.在夜间模式下,整个页面将逐渐变暗,所有文本颜色也将调整为暗色。 2.在日间模式下,页面和所有文本... -
esp8266气象站+HTML网页控制
2021-03-24 22:44:36esp8266气象时钟+网页控制+OTA升级 可以通过电脑和手机浏览器访问: -
初级java笔试题-quincy-larson-emails:quincy-larson-电子邮件
2021-06-03 02:37:29响应式网页设计是一种使网站在不同屏幕尺寸上看起来更好的方法。 本课程将向您展示如何使用 CSS 媒体查询(一种内置于所有主要浏览器的关键工具)来构建在笔记本电脑、平板电脑和手机上看起来很棒的设计。 (90分钟... -
如何设置计划任务程序 每6小时运行一次_如何使win10系统运行的更快?
2020-11-04 01:17:55微软推出的新操作系统Windows 10越来越受到欢迎,用户越来越多,大家是不是会有这样的感觉:同一款电脑,同样的配置,为什么有的人的电脑用起来非常的流畅,而有的人就连打开个网页都卡的要命;有的人的电脑开机快... -
无参考屏幕内容图像质量评价
2021-04-26 12:32:05在这类系统中, 各类终端之间可以相互通信, 以实现屏幕内容图像(终端设备绘制并显示在屏幕上的视觉内容, 包括网页、邮件、地图、动画、文档和图像等)的分发和处理.与传统自然图像相比, 屏幕内容图像包含的多媒体形式... -
python 获取网页的内容
2018-11-07 15:07:16我的个人桌面系统用的linuxmint,系统默认没有安装pip,考虑到后面安装requests模块使用pip,所以我这里第一步先安装pip。 1 $ sudo apt install python-pip 安装成功,查看PIP版本: ... -
荣耀MagicBook 2019 Intel版发布:性能新升级 续航长达15小时!
2019-07-24 12:26:38在网页浏览及日常办公达到11小时使用无忧,足以满足用户移动场景下电量需求。 新升级Magic -link 2.0 魔法互传,跨终端智能交互无缝分享 对于日常在传文件、传视频上有大量需求的用户而言,如何快速实现... -
微信公众号扫码登录 提示 网络出错了, 轻触屏幕重新加载-1001错误
2020-02-18 20:35:43iphone 手机扫码或者密码登录, 使用WiFi或者4G扫码 登录微信公众号都提示1001错误 ...网上搜索的结果基本上就是说系统时间的问题,把系统时间设置为24小时制就ok了。 可是我照做了,还是没有用 继续上... -
小麦苗的常用代码--常用命令(仅限自己使用)
2019-09-24 17:52:32小麦苗的常用代码--常用命令(仅限自己使用) 囗 ■ ☑ ● • · ◆ ※ ☆ ★ ⊙ √ → innobackupex--help -? -h help=y sy... -
双12使用腾讯云WAF反羊毛党、黄牛党战纪全记录
2019-01-28 22:07:59在同一时间使用大量的并发请求该相关的API,要知道一家公司接入SMS网关是需要付“通道费”的,多则1毛,2毛,少则也要几分钱,试想一下10万到20万量级的并发调用连续不停24小时持续几天来调用这些接口那么对于公司来... -
【油猴脚本编写初体验】一键复制网页标题和地址(copy-title-and-location)
2021-07-19 15:13:04从【一键复制网页标题和地址(油猴脚本)】所收获的知识点 文章更新:2021年7月19日15:26:07 前言 我给自己的蓝色小按钮取名为“福妞”,取“用来复(福)制的按钮(妞)”之意。 我是在2021年5月27日左右初步完成... -
【原创】HTML&CSS学习笔记(11) ----像素px,屏幕大小,PPI等知识
2019-01-21 22:57:06比如你拍星星的轨迹,就需要很长的曝光时间(可能是几个小时),这样星星的长时间运动轨迹就会在底片上成像。如果你要拍飞驰的汽车清晰的身影就要用很短的时间(通常是几千分之一秒)。曝光时间长的话进的光就多,...
-
<em>网页</em>制作小工具——取色器,<em>屏幕</em>像素测量尺常用的<em>网页</em>制作小工具,取色器可以获取任意点的颜色,<em>屏幕</em>像素测量尺可以测量<em>网页</em>中的元素像素,这些都是常用的<em>网页</em>制作工具,很实用哦~
-
像素尺子,<em>网页</em>制作工具<em>网页</em>制作工具,可以用来测量像素,处理页面。是<em>网页</em>制作的利器
-
<em>屏幕</em>录像专家7.5+注册机<em>使用</em>它可以轻松地将<em>屏幕</em>上的软件操作过程、网络教学课件、网络电视、网络电影、聊天视频等录制成FLASH动画、ASF动画、AVI动画或者自播放的EXE动画。本软件具有长
-
<em>屏幕</em>取色工具不错的取色工具,体积小功能强!设计<em>网页</em>的时候再也不用频繁的打开photoshop了,我一直在用!希望它对大家有用!
-
HTML<em>网页</em>保存成jpg图片输入网址,打开网站,就可以把整个网站保存成一张图片。 有时候需要把整个网站做成演示图片的时候用这个最方便了。