H5+

1、打开HBuilderX App版

新建项目

配置模拟器端口

device

Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。

属性:

  • imei: 设备的国际移动设备身份码
  • imsi: 设备的国际移动用户识别码
  • model: 设备的型号
  • vendor: 设备的生产厂商
  • uuid: 设备的唯一标识
<h3>信息获取</h3>
<p>uuid:<span id="uuid"></span></p>
<p>os: <span id="osName"></span></p>
<p>厂商: <span id="vendor"></span></p>
<p>网络:<span id="net"></span></p>

document.addEventListener('plusready', function(){
  //console.log("所有plus api都应该在此事件发生后调用,否则会出现plus is undefined。"
  uuid.innerHTML = plus.device.uuid;
  osName.innerHTML = plus.os.name;
  vendor.innerHTML = plus.device.vendor;
  net.innerHTML = plus.networkinfo.getCurrentType()===3?'wifi':'其他';
  // 0 -6  3是wifi 4是2g 5 3g 6 4g
});

runtime

Runtime模块管理运行环境,可用于获取当前运行环境信息、与其它程序进行通讯等。通过plus.runtime可获取运行环境管理对象。

方法

<h3>运行时</h3>
<p> 
  <button onclick="plus.runtime.quit()">退出应用</button> | 
  <button onclick="plus.runtime.restart()">重启应用</button>
</p>

plus.key.addEventListener("backbutton",()=>{
  plus.nativeUI.confirm("确认要关闭app?",(e)=>{
    if(e.index==0){
      plus.runtime.quit();
      // 如果用户单击的是确定,退出app
     }
   })
 })

nativeUI

nativeUI管理系统原生界面,可用于弹出系统原生提示对话框窗口、时间日期选择对话框、等待对话框等。

方法:

alert

弹出系统提示对话框
创建并显示系统样式提示对话框,可设置提示对话框的标题、内容、按钮文字等。 弹出的提示对话框为非阻塞模式,用户点击提示对话框上的按钮后关闭,并通过alertCB回调函数通知对话框已关闭。
示例:

// 弹出系统提示对话框
function showAlert(){
  plus.nativeUI.alert("你好程序员",()=>console.log("用户点击"),"原生弹出","确定")
  // 弹出内容,回调函数,标题,确定按钮文字
}
confirm

弹出系统确认对话框

创建并显示系统样式确认对话框,可设置确认对话框的标题、内容、按钮数目及其文字。 弹出的确认对话框为非阻塞模式,用户点击确认对话框上的按钮后关闭,并通过confirmCB回调函数通知用户点击的按钮索引值。
示例:

// 弹出提示信息对话框
function showConfirm(){
    plus.nativeUI.confirm("Are you sure ready?", function(e){
        console.log("Close confirm: "+e.index);
    });
}
showWaiting

显示系统等待对话框
创建并显示系统样式等待对话框,并返回等待对话框对象Waiting,显示后需调用其close方法进行关闭。
示例:

// 弹出系统等待对话框
function showWaiting(){
    var w = plus.nativeUI.showWaiting("等待中...");
}
pickDate

弹出系统日期选择对话框

创建并显示系统样式日期选择对话框,可进行日期的选择。 用户操作确认后通过successCB回调函数返回用户选择的日期,若用户取消选择则通过errorCB回调。

function pickDate(){
            var styles = {};
            styles.title = "请选择日期:"; // 显示标题
            styles.date = new Date(), styles.date.setFullYear(2020,4,24);// 默认显示的日期
            styles.minDate = new Date(), styles.minDate.setFullYear(2010,0,1);// 设置最小可选日期为“2010-01-01”
            styles.maxDate = new Date(), styles.maxDate.setFullYear(2020,11,31);// 设置最大可选日期为“2020-12-31”
            
            plus.nativeUI.pickDate(function(e){
                var d=e.date;
                console.log( "选择的日期:"+d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() );
            }, function(e){
                console.log( "未选择日期:"+e.message );
            }, styles);
        }

share

Share模块管理客户端的社交分享功能,提供调用终端社交软件的分享能力。通过plus.share可获取社交分享管理对象。

分享接口支持开发者获取设备上安装的社交App环境,调用社交App进行分享操作。若当前设备安装了对应的社交App,则调用此App的分享操作界面,否则调用WAP页面进行分享。

function share(){
           window.plusShare({
               title:"神级网站",
               content:"解决程序员99%烦恼",
               href:"http://www.baidu.com",
               thumbs:["http://520mg.com/source/images/640.jpg"]//图片
           },res=>{plus.nativeUI.toast("分享成功")})
       } 

camera

Camera模块管理设备的摄像头,可用于拍照、摄像操作,通过plus.camera获取摄像头管理对象。

方法:
getCamera

获取摄像头管理对象

function appendByCamera(){
  plus.camera.getCamera().captureImage(p=>appendFile(p),e=>console.log("错误:"+e),
{filename:'_doc/camera/',index:1});
  // 插件 获取相机,获取图片,成功执行回调函数 把p传递给appendFile函数
}
function appendFile(p){
  // 获取文件名
  var n = p.substr(p.lastIndexOf("/")+1);
  console.log("文件名"+n)
  // 获取 文件p地址的最后一个斜杠后文本(文件名)
// lastIndexOf从后面查找字符串,并返回它的位置
  myfile.innerHTML = n; // 显示文件的后缀名
  file = p; //把p 赋值给 file
}

gallery

Gallery模块管理系统相册,支持从相册中选择图片或视频文件、保存图片或视频文件到相册等功能。通过plus.gallery获取相册管理对象。

方法:
  • pick: 从系统相册选择文件(图片或视频)
  • save: 保存文件到系统相册中
pick
function appendFile(p){
  // 获取文件名
  var n = p.substr(p.lastIndexOf("/")+1);
  console.log("文件名"+n)
  // 获取 文件p地址的最后一个斜杠后文本(文件名) lastIndexOf从后面查找字符串,并返回它的位置
  myfile.innerHTML = n; // 显示文件的后缀名
  file = p; //把p 赋值给 file
}
function appendByGallery(){
  plus.gallery.pick(p=>appendFile(p))
}
save
function photo(){
  plus.camera.getCamera().captureImage(
    p=>{
      plus.gallery.save(p,s=>console.log("成功",s),se=>console.log("失败",se));
      // 图片保存再相册中;
      // 把当前的图片插入到 咱们网页中
      // p这个文件地址不是实际的绝对地址
      plus.io.resolveLocalFileSystemURL( p, 
        entry=>{
          var pa = document.createElement("p");
          // 创建p元素
          pa.innerHTML=`<img width="160" src="${entry.toLocalURL()}"/>`;
          // 设置p的内容为图片
          picbox.appendChild(pa);}
        );                          
      },
      e=>{},
  {});
  //成功,失败,拍照选项 
}
    // 实现 拍照,保存到相册,插入网页中
    // plus.camera.getCamera().captureImage() 拍照 : 成功回调 ,失败回调,拍照参数
    // plus.gallery.save 保存图片到相册 :图片地址,成功回调,失败回调
    // plus.io.resolveLocalFileSystemURL 解析文件地址:成回调,失败回调
    // 成回调 entery.toLocalURl() 把文件地址解析为本地urL

uploader

Uploader模块管理网络上传任务,用于从本地上传各种文件到服务器,并支持跨域访问操作。通过plus.uploader可获取上传管理对象。Uploader上传使用HTTP的POST方式提交数据,数据格式符合Multipart/form-data规范,即rfc1867(Form-based File Upload in HTML)协议。

方法:
function upload(){
  // 如果没有file 就提示
  if(!file){plus.nativeUI.alert("你还没有选中文件啦");return;}
  var url = "http://www.520mg.com/ajax/file.php";
  var task = plus.uploader.createUpload(
    url,
    {method:'POST'},
    (t,status)=>{
      if(status==200){
        console.log("上传成功");
        var picurl = "http://www.520mg.com"+JSON.parse(t.responseText).pic;                     
        // 图片的远程地址
        var p = document.createElement("p");
        // 创建p元素
        p.innerHTML=`<img width="160" src="${picurl}"/>`;
        // 设置p的内容为图片
        picbox.appendChild(p);
        // 把p内容插入到picbox里面
      }else{
        console.log("上传失败:"+status);
      }
    })
    // task上传的任务
    // 上传地址 ,上传方法配置,回调函数
    task.addFile(file,{key:"file"});
    // 给上传任务添加文件
    task.start();
    // 开始上传
}

webview

Webview模块管理应用窗口界面,实现多窗口的逻辑控制管理操作。通过plus.webview可获取应用界面管理对象。

方法:
var _openw = null;
        function openAbout(){
         
            if(_openw){return;}//防止快速点击;
            _openw = plus.webview.create('./about.html','about',{
                backButtonAutoControl:'close',//当返回的时候关闭webview(当前的窗口)
                // 设置标题
                titleNView:{
                    autoBackButton:true,//默认返回按钮
                    backgroundColor:"#F30", //标题栏颜色,
                    titleText:'关于我们',//标题栏文本,
                    titleColor:"#fff",
                    buttons:[{
                        type:'share',
                        onclick:()=>alert("分享被点击了")
                    }]
                    
                }
            })  
            _openw.addEventListener('close',()=>_openw=null);//当关闭时候清空当前webView
            _openw.show('slide-in-right');
        }
        function openPage(url,title,bgcolor){
            plus.navigator.setStatusBarBackground(bgcolor);
            if(_openw){return;}//防止快速点击;
            _openw = plus.webview.create(url,title,{
                backButtonAutoControl:'close',//当返回的时候关闭webview(当前的窗口)
                // 设置标题
                titleNView:{
                    autoBackButton:true,//默认返回按钮
                    backgroundColor:bgcolor, //标题栏颜色,
                    titleText:title,//标题栏文本,
                    titleColor:"#fff",
                    progress:{color:"#fff"},
                    // 设置进度条的颜色为白色
                    buttons:[{
                        type:'share',
                        onclick:()=>alert("分享被点击了")
                    }]
                    
                }
            })  
            _openw.addEventListener('close',()=>{_openw=null;plus.navigator.setStatusBarBackground("#f30");});//当关闭时候清空当前webView
            _openw.show('slide-in-right');
        }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容