Open lainlee opened 6 years ago
怎样解决的?
怎么解决的 老哥
@jasonz1987 这个为什么close了
1、确实是没有权限导致的。缺了什么权限?缺往手机上写文件的权限(1楼截图里面“读写手机存储”不是绿的)。
2、在config.xml
里面加了
<config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</config-file>
为什么还是不行?因为安卓6.0的权限变成了运行时权限,不再是安装时候所有权限都拿到,而是随用随取。所以在分享之前,需要用代码取得读写手机存储的权限。
下面2种办法任选其一,我选的第二个。
1、在这个库没更新之前,你可以把这个库clone下来,在Android代码里获取缩略图的地方,加上Android的代码,请求WRITE_EXTERNAL_STORAGE
权限,然后在你的cordova项目中引用自己的git库。甚至你改完还可以提个pull request。
2、安装android-permission的插件,然后用这个插件在js代码里,在分享之前请求权限:
if (window.device.platform === 'Android') {
const permissions = window.cordova.plugins.permissions;
// 安卓6.0请求读写权限
permissions.checkPermission(permissions.WRITE_EXTERNAL_STORAGE, (status) => {
// console.log('安卓权限成功');
if (status.hasPermission) {
console.log('有权限');
window.Wechat.share();
} else {
console.log('无权限');
permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, (requestStatus) => {
if (requestStatus.hasPermission) {
window.Wechat.share();
} else {
alert('分享需要权限')
}
});
}
}, () => {
console.log('安卓权限失败');
});
} else {
// ios直接发送分享请求
window.Wechat.share();
}
@lainlee @mingdong88 @kk595076886 @jasonz1987
@349989153 使用插件的版本是多少?
@jasonz1987 版本:2.6.0
我在这个库里搜了一下requestPermissions
(这是请求权限的Android代码),没搜到,我估计这个库还没这个功能呢。
可以更新到2.8.0 测试一下 最新加入了对权限的判断~
@jasonz1987 呃,好的,感谢。
能不能告知一下权限的代码在哪个文件里,我去学习一下。
确实没搜到requestPermissions
使用的是
cordova.requestPermission(this, REQUEST_CODE_ENABLE_PERMISSION, ANDROID_WRITE_EXTERNAL_STORAGE);
Wechat.java 第629行
@jasonz1987 ok明白了,我觉得可以关闭了。
您好,最近使用了这个微信插件,支付分享都没问题,不过分享时 thumb 选项用的是外链图片,最后报了permission 错误,如下
Logcat 报错
分享时的配置如下
机型
小米6,Android 7.1.1,API 25
看了下 Manifest 权限也都有(不过进入应用时并没有提示)
手机内应用的权限为
试了一下,手动将存储设置为允许是ok的,但是默认并不会允许也没有提示,重新安装也不会