Android小白

Android小白笔记

2017-12-23  本文已影响3人  独孤流

> 1、进入下一个页面

private void enterMainActivity() {
 // 从当前A页面进入B页面
 Intent intent = new Intent(AActivity.this, BActivity.class);
 startActivity(intent);
 // 关闭销毁当前A页面
 finish();
}

> 2、实现单例

public enum SinglePeople {

    INSTANCE;
    private Int age;
    private String name;
    /**
    * 创建对象的构造方法
    */
    SinglePeople() {
        age = 0;
       name = "hello";
    }
   // 实例方法
    public String getName() {
        return name;
    }
   // 实例方法
    public void resetPeople() {
        age = 0;
       name = "hello";
    }

}

// 使用单例
SinglePeople.INSTANCE.getName();

Mac 安卓模拟器调试网页about:inspect
安卓模拟器调试网页

Android5.0 WebView中Http和Https混合问题 HTTPS网站加载http图片加载不到的问题

场景复现:

在Android5.0 以及以上的系统,当WebView加载的链接为Https开头,但是链接里面的内容,比如图片为Http链接,这时候,图片就会加载不出来,在浏览器中的Console会有如下警告log: image

原因:

从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。

知识储备:

从Android5.0以后,当一个安全的站点(https)去加载一个非安全的站点(http)时,需要配置Webview加载内容的混合模式,一共有如下三种模式:

  1. MIXED_CONTENT_NEVER_ALLOW:Webview不允许一个安全的站点(https)去加载非安全的站点内容(http),比如,https网页内容的图片是http链接。强烈建议App使用这种模式,因为这样更安全。
  2. MIXED_CONTENT_ALWAYS_ALLOW:在这种模式下,WebView是可以在一个安全的站点(Https)里加载非安全的站点内容(Http),这是WebView最不安全的操作模式,尽可能地不要使用这种模式。
  3. MIXED_CONTENT_COMPATIBILITY_MODE:在这种模式下,当涉及到混合式内容时,WebView会尝试去兼容最新Web浏览器的风格。一些不安全的内容(Http)能被加载到一个安全的站点上(Https),而其他类型的内容将会被阻塞。这些内容的类型是被允许加载还是被阻塞可能会随着版本的不同而改变,并没有明确的定义。这种模式主要用于在App里面不能控制内容的渲染,但是又希望在一个安全的环境下运行。

分析:

在Android5.0以下,默认是采用的MIXED_CONTENT_ALWAYS_ALLOW模式,即总是允许WebView同时加载Https和Http;而从Android5.0开始,默认用MIXED_CONTENT_NEVER_ALLOW模式,即总是不允许WebView同时加载Https和Http。

虽然官网给出的建议是,为了安全考虑,使用MIXED_CONTENT_NEVER_ALLOW模式,但是在实际引用中,当我们的服务器已经升级到Https,但是一些页面的资源是第三方的,我们不能要求第三方也都升级到Https,所以我们只能根据系统版本,用代码去设置加载模式为MIXED_CONTENT_ALWAYS_ALLOW。

解决方法:

在webview加载页面之前,设置加载模式为MIXED_CONTENT_ALWAYS_ALLOW

[java] view plaincopy

<embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  2. webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  3. }

备注:

我试着改成MIXED_CONTENT_COMPATIBILITY_MODE模式,也是可以的,但是还不明确其真正含义,为了保险起见,使用了MIXED_CONTENT_ALWAYS_ALLOW模式,有异议的,请不吝赐教。

上一篇 下一篇

猜你喜欢

热点阅读