• uniapp 添加定位权限及弹出权限弹框


    背景: Android 10 获取当前连接wifi 的名称,老是返回unkonw null,原因是没有获取到定位权限,打开定位权限后就可以获取。

    Android 10 以后,获取定位权限需要在manifest.json中添加如下:

      "",
      "",
     "",
    
    • 1
    • 2
    • 3

    添加上如上权限之后,查看应用的权限,定位显示询问,还是没有获取到定位权限。

    弹出定位权限弹框,让用户选择允许,实现如下:

         async openGps(){
            plus.android.requestPermissions(
            	['android.permission.ACCESS_FINE_LOCATION'], 
            	function(resultObj) {
            		var result = 0;
            		for (var i = 0; i < resultObj.granted.length; i++) {
            			var grantedPermission = resultObj.granted[i];
            			console.log('已获取的权限:' + grantedPermission);
            			result = 1
            		}
            		for (var i = 0; i < resultObj.deniedPresent.length; i++) {
            			var deniedPresentPermission = resultObj.deniedPresent[i];
            			console.log('拒绝本次申请的权限:' + deniedPresentPermission);
            			result = 0
            		}
            		for (var i = 0; i < resultObj.deniedAlways.length; i++) {
            			var deniedAlwaysPermission = resultObj.deniedAlways[i];
            			console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
            			result = -1
            		}
                // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
                if (result != 1) {
                  //如果用户第一次拒绝后,跳转到**应用**的权限页面
                   var Intent = plus.android.importClass("android.content.Intent");
                   var Settings = plus.android.importClass("android.provider.Settings");
                   var Uri = plus.android.importClass("android.net.Uri");
                   var mainActivity = plus.android.runtimeMainActivity();
                   var intent = new Intent();
                   intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                   var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
                   intent.setData(uri);
                   mainActivity.startActivity(intent);
                }
            	},
            	function(error) {
            		console.log('申请权限错误:' + error.code + " = " + error.message);
            		resolve({
            			code: error.code,
            			message: error.message
            		});
            	}
            );
           },
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    主要代码:

    plus.android.requestPermissions(
            	['android.permission.ACCESS_FINE_LOCATION'], 
            	function(resultObj) {}
     );
    
    • 1
    • 2
    • 3
    • 4

    调用上边的代码,会出现弹框。

  • 相关阅读:
    Android Fragment
    红蓝攻防演练怎样构建实战化网络安全防御体系
    Kubernetes(k8s)的Volume数据存储配置储存类型ConfigMap和Secret的使用
    数据结构和算法——图结构
    Linux环境中使用C++ JsonCpp库
    C#:实现鸡尾酒定向冒泡排序算法(附完整源码)
    【C++算法】is_partitioned、partition_copy和partition_point
    河北大学选择ZStack Cube超融合一体机打造实训云平台
    TIA博途中如何在网络视图中显示完整的设备名称?
    Mybatis-Plus 0基础光速入门代码
  • 原文地址:https://blog.csdn.net/weixin_41767649/article/details/127807858