main.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. export default function(){
  2. //当应用无访问摄像头/相册权限,引导跳到设置界面
  3. uni.addInterceptor('chooseImage', {
  4. fail(e) { // 失败回调拦截 更多拦截器用法 [详情](https://uniapp.dcloud.io/api/interceptor?id=addinterceptor)
  5. console.log(e);
  6. if (uni.getSystemInfoSync().platform == "android" && e.errMsg == 'chooseImage:fail No Permission') {
  7. if (e.code === 11) {
  8. uni.showModal({
  9. title: "无法访问摄像头",
  10. content: "当前无摄像头访问权限,建议前往设置",
  11. confirmText: "前往设置",
  12. success(e) {
  13. if (e.confirm) {
  14. gotoAppPermissionSetting()
  15. }
  16. }
  17. });
  18. } else {
  19. uni.showModal({
  20. title: "无法访问相册",
  21. content: "当前无系统相册访问权限,建议前往设置",
  22. confirmText: "前往设置",
  23. success(e) {
  24. if (e.confirm) {
  25. gotoAppPermissionSetting()
  26. }
  27. }
  28. });
  29. }
  30. } else if (e.errCode === 2&&e.errMsg == "chooseImage:fail No filming permission") {
  31. console.log('e.errMsg === 2 ios无法拍照权限 ');
  32. // 注:e.errCode === 8 ios无从相册选择图片的权限 api已内置无需自己用拦截器实现
  33. uni.showModal({
  34. title: "无法访问摄像头",
  35. content: "当前无摄像头访问权限,建议前往设置",
  36. confirmText: "前往设置",
  37. success(e) {
  38. if (e.confirm) {
  39. gotoAppPermissionSetting()
  40. }
  41. }
  42. });
  43. }
  44. }
  45. })
  46. //跳转到**应用**的权限页面 参考来源:https://ext.dcloud.net.cn/plugin?id=594
  47. function gotoAppPermissionSetting() {
  48. if (uni.getSystemInfoSync().platform == "ios") {
  49. var UIApplication = plus.ios.import("UIApplication");
  50. var application2 = UIApplication.sharedApplication();
  51. var NSURL2 = plus.ios.import("NSURL");
  52. var setting2 = NSURL2.URLWithString("app-settings:");
  53. application2.openURL(setting2);
  54. plus.ios.deleteObject(setting2);
  55. plus.ios.deleteObject(NSURL2);
  56. plus.ios.deleteObject(application2);
  57. } else {
  58. var Intent = plus.android.importClass("android.content.Intent");
  59. var Settings = plus.android.importClass("android.provider.Settings");
  60. var Uri = plus.android.importClass("android.net.Uri");
  61. var mainActivity = plus.android.runtimeMainActivity();
  62. var intent = new Intent();
  63. intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  64. var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
  65. intent.setData(uri);
  66. mainActivity.startActivity(intent);
  67. }
  68. }
  69. }