果然还是得靠自己,原因是Android6.0以后打包的APP需要在代码中申请权限,而不是在安装的时候就授予权限。
最终找到了这篇文章:
http://ask.dcloud.net.cn/article/1365
原贴有源代码
配合官方提供的http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.checkPermission权限判断方法一起使用就可以实现了,下面贴出我的主要代码:
// 我在原贴作者代码中加了一个一次请求APP全部所需权限的方法(PermissionUtils.java)
public void requestMultiPermissions() {
if (mActivity != null && Build.VERSION.SDK_INT >= 23) {
PermissionGrant permissionGrant = new PermissionGrant() {
@Override
public void onPermissionGranted(int requestCode) {
if (requestWebViewPremissionListener != null) {
requestWebViewPremissionListener.requestPremissionCallBack(CODE_MULTI_PERMISSION);
}
}
};
mActivity.setPermissionGrant(permissionGrant);
requestMultiPermissions(mActivity, permissionGrant);
} else if (Build.VERSION.SDK_INT < 23) {
if (requestWebViewPremissionListener != null) {
requestWebViewPremissionListener.requestPremissionCallBack(CODE_MULTI_PERMISSION);
}
} else {
Log.w(TAG, "WebView requestWebViewPremission error ,安卓运行版本:" + Build.VERSION.SDK_INT);
}
}
/**
* 请求权限
* @param {Number} requestCode
* @param {Function} [func]
*/
static requestAndroidPremission(requestCode, func) {
if (!this.__permissionUtils) {
this.__permissionUtils = plus.android.newObject("your.package.PermissionUtils");
}
var requestAndroidPremissionCallBack = function (requestCode) {
typeof func === 'function' && func(requestCode)
};
// 实现原生接口PermissionUtils.RequestWebViewPremissionListener对象
var hevent = plus.android.implements("cn.xjkj.feibo.PermissionUtils$RequestWebViewPremissionListener", {
"requestPremissionCallBack": function (requestCode) {
requestAndroidPremissionCallBack(requestCode);
}
});
plus.android.invoke(this.__permissionUtils, 'setRequestWebViewPremissionListener', hevent);
plus.android.invoke(this.__permissionUtils, "requestWebViewPremission", requestCode);
}
/**
* 请求多项权限
* @param [func]
*/
static requestMultiAndroidPermissions(func) {
if (!this.__permissionUtils) {
this.__permissionUtils = plus.android.newObject("cn.xjkj.feibo.PermissionUtils");
}
var requestAndroidPremissionCallBack = function (requestCode) {
typeof func === 'function' && func(requestCode)
};
// 实现原生接口PermissionUtils.RequestWebViewPremissionListener对象
var hevent = plus.android.implements("your.package.PermissionUtils$RequestWebViewPremissionListener", {
"requestPremissionCallBack": function (requestCode) {
requestAndroidPremissionCallBack(requestCode);
}
});
plus.android.invoke(this.__permissionUtils, 'setRequestWebViewPremissionListener', hevent);
plus.android.invoke(this.__permissionUtils, "requestMultiPermissions");
}
1 个回复
Mr_ZY (作者)
果然还是得靠自己,原因是Android6.0以后打包的APP需要在代码中申请权限,而不是在安装的时候就授予权限。
最终找到了这篇文章:
http://ask.dcloud.net.cn/article/1365
原贴有源代码
配合官方提供的http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.checkPermission权限判断方法一起使用就可以实现了,下面贴出我的主要代码: