HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

ios 用户拒绝 相册访问 ,引导用户 到 设置页面,开启 相册访问权限

                            uni.chooseImage({  
                    count: 1,  
                    sizeType: ['original', 'compressed'],  
                    sourceType: ['album'],  
                    success: res => {  
                        console.log(res)  
                    },  
                    fail: err => {  
                        console.log('选择图片失败!')  
                        // #ifdef APP-PLUS  
                          if(plus.os.name == 'iOS') {  
                              var PHPhotoLibrary = plus.ios.importClass('PHPhotoLibrary')  
                              var PHAuthorizationStatus = PHPhotoLibrary.authorizationStatus()  
                              if(PHAuthorizationStatus != 3 ) {  
                                 uni.showModal({  
                                    content: '需要访问您的相册,请在设置里开启',  
                                    confirmText: '设置',  
                                    success: res => {  
                                        if(res.confirm) {  
                                            plus.runtime.openURL('app-settings://')  
                                        }  
                                    }  
                                 });   
                              }  
                          }  
                        // #endif  
                        console.log(JSON.stringify(err))  
                    }  
                })  
继续阅读 »
                            uni.chooseImage({  
                    count: 1,  
                    sizeType: ['original', 'compressed'],  
                    sourceType: ['album'],  
                    success: res => {  
                        console.log(res)  
                    },  
                    fail: err => {  
                        console.log('选择图片失败!')  
                        // #ifdef APP-PLUS  
                          if(plus.os.name == 'iOS') {  
                              var PHPhotoLibrary = plus.ios.importClass('PHPhotoLibrary')  
                              var PHAuthorizationStatus = PHPhotoLibrary.authorizationStatus()  
                              if(PHAuthorizationStatus != 3 ) {  
                                 uni.showModal({  
                                    content: '需要访问您的相册,请在设置里开启',  
                                    confirmText: '设置',  
                                    success: res => {  
                                        if(res.confirm) {  
                                            plus.runtime.openURL('app-settings://')  
                                        }  
                                    }  
                                 });   
                              }  
                          }  
                        // #endif  
                        console.log(JSON.stringify(err))  
                    }  
                })  
收起阅读 »

安卓获取已安装APP列表

Android uniapp

最近使用uniapp需要获取安卓手机已安装的应用列表
直接上代码

getAppList(){  
    plus.android.importClass('java.util.ArrayList');  
    plus.android.importClass('android.content.pm.PackageInfo');    
    plus.android.importClass('android.content.pm.PackageManager');  
    var ApplicationInfo = plus.android.importClass('android.content.pm.ApplicationInfo');  
    var MainActivity = plus.android.runtimeMainActivity();    
    var PackageManager = MainActivity.getPackageManager();    
    var pinfo = plus.android.invoke(PackageManager, 'getInstalledPackages', 0)    
    if (pinfo != null) {  
        var apklist = []  
        for (var i = 0; i < pinfo.size(); i++) {    
            //PackageInfo{4b45699f9d  com.tencent.mobileqq}    
            var pkginfo = pinfo.get(i);  
            var issysapk = ((pkginfo.plusGetAttribute("applicationInfo").plusGetAttribute("flags") & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false  
            if(issysapk == false){  
                const apkinfo = {  
                    appName:pkginfo.plusGetAttribute("applicationInfo").loadLabel(PackageManager).toString(),  
                    packageName:pkginfo.plusGetAttribute("packageName"),  
                    versionName:pkginfo.plusGetAttribute("versionName"),  
                    versionCode:pkginfo.plusGetAttribute("versionCode")  
                }  
                apklist.push(apkinfo)  
            }  

        }  
        //this.appList = apklist  
        //打印出所有的APP名称,包名,版本  
        console.log(JSON.stringify(apklist))  
    }  
}

直接调用此方法即可。

继续阅读 »

最近使用uniapp需要获取安卓手机已安装的应用列表
直接上代码

getAppList(){  
    plus.android.importClass('java.util.ArrayList');  
    plus.android.importClass('android.content.pm.PackageInfo');    
    plus.android.importClass('android.content.pm.PackageManager');  
    var ApplicationInfo = plus.android.importClass('android.content.pm.ApplicationInfo');  
    var MainActivity = plus.android.runtimeMainActivity();    
    var PackageManager = MainActivity.getPackageManager();    
    var pinfo = plus.android.invoke(PackageManager, 'getInstalledPackages', 0)    
    if (pinfo != null) {  
        var apklist = []  
        for (var i = 0; i < pinfo.size(); i++) {    
            //PackageInfo{4b45699f9d  com.tencent.mobileqq}    
            var pkginfo = pinfo.get(i);  
            var issysapk = ((pkginfo.plusGetAttribute("applicationInfo").plusGetAttribute("flags") & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false  
            if(issysapk == false){  
                const apkinfo = {  
                    appName:pkginfo.plusGetAttribute("applicationInfo").loadLabel(PackageManager).toString(),  
                    packageName:pkginfo.plusGetAttribute("packageName"),  
                    versionName:pkginfo.plusGetAttribute("versionName"),  
                    versionCode:pkginfo.plusGetAttribute("versionCode")  
                }  
                apklist.push(apkinfo)  
            }  

        }  
        //this.appList = apklist  
        //打印出所有的APP名称,包名,版本  
        console.log(JSON.stringify(apklist))  
    }  
}

直接调用此方法即可。

收起阅读 »

关于uniapp中使用web-view的经验

uniapp Webview

首先说一下环境,用的是HBX1.9.4,连接的网页是vue工程下的一个界面,存在路由的判断,我做的一些跳转都是在路由里面设置的
一开始,出现了一个很奇怪的问题,不知道是不是在vue中异步请求的问题,后来证明不是

document.addEventListener('UniAppJSBridgeReady', function () {  
      uni.reLaunch({  
           url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
       });  
});

在上一段代码中,我只要单独放一个输出语句,完全可以,但是只要加了跳转的语句,就不会触发
后来试了很多次,利用延时语句,发现是不定时的触发,偶尔性
后来网上查找资料参考了支付宝小程序的使用文档,模仿使用window.UniAppJSBridge,完美解决问题,之前看到有人说使用uni.postMessage的时候,uniapp并不能及时收到网页传回来的消息,这个我没有验证,感兴趣的可以试一试,我的代码如下:

 setTimeout(() => {  
                    if (window.UniAppJSBridge) {  
                        uni.reLaunch({  
                            url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                        });  
                    } else {  
                        document.addEventListener('UniAppJSBridgeReady', function () {  
                            uni.reLaunch({  
                                url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                            });  
                        });  
                    }  
                }, 100);

大家有问题,可以评论

继续阅读 »

首先说一下环境,用的是HBX1.9.4,连接的网页是vue工程下的一个界面,存在路由的判断,我做的一些跳转都是在路由里面设置的
一开始,出现了一个很奇怪的问题,不知道是不是在vue中异步请求的问题,后来证明不是

document.addEventListener('UniAppJSBridgeReady', function () {  
      uni.reLaunch({  
           url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
       });  
});

在上一段代码中,我只要单独放一个输出语句,完全可以,但是只要加了跳转的语句,就不会触发
后来试了很多次,利用延时语句,发现是不定时的触发,偶尔性
后来网上查找资料参考了支付宝小程序的使用文档,模仿使用window.UniAppJSBridge,完美解决问题,之前看到有人说使用uni.postMessage的时候,uniapp并不能及时收到网页传回来的消息,这个我没有验证,感兴趣的可以试一试,我的代码如下:

 setTimeout(() => {  
                    if (window.UniAppJSBridge) {  
                        uni.reLaunch({  
                            url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                        });  
                    } else {  
                        document.addEventListener('UniAppJSBridgeReady', function () {  
                            uni.reLaunch({  
                                url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                            });  
                        });  
                    }  
                }, 100);

大家有问题,可以评论

收起阅读 »

#APP的H5页面#教育类

5+App开发

UI设计已完成
开发类似于凯叔讲故事html5 App,(Android/iOS版)
有现成后台服务器和相应接口,
需有深圳开发者方便交流,要有webSocket及 支付相关经验开发
预算1万起,面谈

UI设计已完成
开发类似于凯叔讲故事html5 App,(Android/iOS版)
有现成后台服务器和相应接口,
需有深圳开发者方便交流,要有webSocket及 支付相关经验开发
预算1万起,面谈

DCloud appid 用途/作用/使用说明

appid

> 文档已迁移至新链接:https://uniapp.dcloud.net.cn/dev/app/introduction.html
> 如有疑问,可以单独发贴咨询。

继续阅读 »

> 文档已迁移至新链接:https://uniapp.dcloud.net.cn/dev/app/introduction.html
> 如有疑问,可以单独发贴咨询。

收起阅读 »

禁用软键盘方法

软键盘

// html  
<input type="number"  class="mui-input-clear"  value="" onclick="app.hideKeyBoard(this);">  

app.hideKeyBoard= function(dom) {  
        // 隐藏键盘  
        document.activeElement.blur();  
        setTimeout(function() {  
            _$(dom).focus()  
        }, 20)  

    }  

看了很多禁用软键盘的帖子 都不是很满意,通过测试,上面的技巧可以有效的禁用软键盘的弹出,其中_$是jq的$方法。这不是最好的方法,希望网友有更好的方法可以提供

继续阅读 »

// html  
<input type="number"  class="mui-input-clear"  value="" onclick="app.hideKeyBoard(this);">  

app.hideKeyBoard= function(dom) {  
        // 隐藏键盘  
        document.activeElement.blur();  
        setTimeout(function() {  
            _$(dom).focus()  
        }, 20)  

    }  

看了很多禁用软键盘的帖子 都不是很满意,通过测试,上面的技巧可以有效的禁用软键盘的弹出,其中_$是jq的$方法。这不是最好的方法,希望网友有更好的方法可以提供

收起阅读 »

WordPress接口大全(sliverRingApi):无须会后台,轻松构建你自己的任何项目

uniapp api WordPress

本套API因为安全问题已经停止更新,最新API接口及工具请关注:Sliver Rest Wp api:全功能的WordPress api工具
希望大家悉知并谅解。

本套API因为安全问题已经停止更新,最新API接口及工具请关注:Sliver Rest Wp api:全功能的WordPress api工具
希望大家悉知并谅解。

离线打包,处理白屏问题

白屏

我想说 uni-app 白屏 困扰了我很多时间,官方每次 版本 更新 都出 处理了 白屏 问题,然而 还是存在白屏
可能对于 主题色 为 白色 或 淡一点 颜色 的 App 感觉不到,深色 主题的 App 就明显的 感觉 到白屏的问题!

我的主题色是 (background: #71925;)

我是通过 IOS 离线打包,并且在 Safari 浏览器 上 调试,审查元素 发现 这一问题的

SDk: http://ask.dcloud.net.cn/article/103
IOS离线打包:http://ask.dcloud.net.cn/article/41
Safari调试iOS应用: http://ask.dcloud.net.cn/article/143

将 App 项目,在 HbuilderX 中 生成本地App包资源

将App 包资源,拖入到 IOS 的 SDK 中(离线打包自己看文档),通过Xcode 将 工程项目打开,找到
App 包资源 www 下的文件

查看 每个 .html 文件中 style 下面 ,html 和 body 的 background 是否 为 #ffffff,我好像每次 生成 本地的 App 包资源,还是 #ffffff,
项目的 app.css ,设置 不是 这个 颜色的 #ffffff, 如果 没有 自己 加个 样式好了

html { background: #171925 }

然后 打包 ios 手机测试 (测试机:iPhone 6s)

Safari 浏览器 调试 你的 App:

然后反复的 切换 页面,杀死进程,重新打开 App 进行 页面切换 未出现 白屏的 现象了!

如果有帮助 请给个赞!

继续阅读 »

我想说 uni-app 白屏 困扰了我很多时间,官方每次 版本 更新 都出 处理了 白屏 问题,然而 还是存在白屏
可能对于 主题色 为 白色 或 淡一点 颜色 的 App 感觉不到,深色 主题的 App 就明显的 感觉 到白屏的问题!

我的主题色是 (background: #71925;)

我是通过 IOS 离线打包,并且在 Safari 浏览器 上 调试,审查元素 发现 这一问题的

SDk: http://ask.dcloud.net.cn/article/103
IOS离线打包:http://ask.dcloud.net.cn/article/41
Safari调试iOS应用: http://ask.dcloud.net.cn/article/143

将 App 项目,在 HbuilderX 中 生成本地App包资源

将App 包资源,拖入到 IOS 的 SDK 中(离线打包自己看文档),通过Xcode 将 工程项目打开,找到
App 包资源 www 下的文件

查看 每个 .html 文件中 style 下面 ,html 和 body 的 background 是否 为 #ffffff,我好像每次 生成 本地的 App 包资源,还是 #ffffff,
项目的 app.css ,设置 不是 这个 颜色的 #ffffff, 如果 没有 自己 加个 样式好了

html { background: #171925 }

然后 打包 ios 手机测试 (测试机:iPhone 6s)

Safari 浏览器 调试 你的 App:

然后反复的 切换 页面,杀死进程,重新打开 App 进行 页面切换 未出现 白屏的 现象了!

如果有帮助 请给个赞!

收起阅读 »

ios 首次打开 App,不允许 扫码,引导用户去设置页面,开启相机权限

// #ifdef APP-PLUS

            var platform = plus.os.name  
            if(platform == 'iOS') {  
                var AVCaptureDevice = plus.ios.importClass('AVCaptureDevice')  
                var scaneState = AVCaptureDevice.authorizationStatusForMediaType('vide')  
                if (3 != scaneState) {  
                    uni.showModal({  
                        content: '需要访问您的相机,请到设置里开启',  
                        confirmText: '设置',  
                        success: res => {  
                            if(res.confirm) {  
                                plus.runtime.openURL('app-settings://')  
                            } else {  
                                uni.navigateBack({  
                                    delta: 1  
                                })  
                            }  
                        }  
                    });  
                }  
            }  
        // #endif  

AVAuthorizationStatusNotDetermined = 0,//用户暂时没有做相关选着  
AVAuthorizationStatusRestricted    = 1,//没有改媒体类型  
AVAuthorizationStatusDenied        = 2,//用户拒绝  
AVAuthorizationStatusAuthorized    = 3,//用户允许  
继续阅读 »

// #ifdef APP-PLUS

            var platform = plus.os.name  
            if(platform == 'iOS') {  
                var AVCaptureDevice = plus.ios.importClass('AVCaptureDevice')  
                var scaneState = AVCaptureDevice.authorizationStatusForMediaType('vide')  
                if (3 != scaneState) {  
                    uni.showModal({  
                        content: '需要访问您的相机,请到设置里开启',  
                        confirmText: '设置',  
                        success: res => {  
                            if(res.confirm) {  
                                plus.runtime.openURL('app-settings://')  
                            } else {  
                                uni.navigateBack({  
                                    delta: 1  
                                })  
                            }  
                        }  
                    });  
                }  
            }  
        // #endif  

AVAuthorizationStatusNotDetermined = 0,//用户暂时没有做相关选着  
AVAuthorizationStatusRestricted    = 1,//没有改媒体类型  
AVAuthorizationStatusDenied        = 2,//用户拒绝  
AVAuthorizationStatusAuthorized    = 3,//用户允许  
收起阅读 »

ajax交互,服务端使用session维护登录态,客户端模拟cookie

AJAX跨域 ajax

之前开发过程中一直是使用的shiro的session维护的登录状态,因为可以方便的管理用户在线

短期内使用token实现整套流程稍繁琐,所以还是先解决当前问题。

不同端用不同方式

浏览器端使用

 "h5": {  
        "devServer": {  
            "port": 8000,  
            "disableHostCheck": true,  
            "proxy": {  
                "/api": {  
                    "target": "域名/api",  
                    "changeOrigin": true,  
                    "secure": false,  
                    "pathRewrite": {"^/api": "/"}  
                }  
            }  
        }  
    }

APP端使用

从返回的头信息中获取cookie,然后设置到全局变量的头信息中,

app.globalData.header.Cookie = res.header["Set-Cookie "];

这里要注意的是在app端获取到的Set-Cookie键是带空格的(小程序端好像不用)。

其它地方引用即可

uni.request({  
  url: serverUrl + `/device/lock/admin/` + e.markerId,  
  method: 'GET',  
  header: app.globalData.header,
继续阅读 »

之前开发过程中一直是使用的shiro的session维护的登录状态,因为可以方便的管理用户在线

短期内使用token实现整套流程稍繁琐,所以还是先解决当前问题。

不同端用不同方式

浏览器端使用

 "h5": {  
        "devServer": {  
            "port": 8000,  
            "disableHostCheck": true,  
            "proxy": {  
                "/api": {  
                    "target": "域名/api",  
                    "changeOrigin": true,  
                    "secure": false,  
                    "pathRewrite": {"^/api": "/"}  
                }  
            }  
        }  
    }

APP端使用

从返回的头信息中获取cookie,然后设置到全局变量的头信息中,

app.globalData.header.Cookie = res.header["Set-Cookie "];

这里要注意的是在app端获取到的Set-Cookie键是带空格的(小程序端好像不用)。

其它地方引用即可

uni.request({  
  url: serverUrl + `/device/lock/admin/` + e.markerId,  
  method: 'GET',  
  header: app.globalData.header,
收起阅读 »

全职求一个uniapp的开发工程师,有一定的项目经验

招聘

全职求一个uniapp的开发工程师,有一定的项目经验。
商业地产大数据领域。
邮箱 dev@smartmorse.com,微信:mackjieson

全职求一个uniapp的开发工程师,有一定的项目经验。
商业地产大数据领域。
邮箱 dev@smartmorse.com,微信:mackjieson