Ionic 调用百度地图插件定位获取不到权限

问题描述:

Ionic 调用百度地图插件定位获取不到权限(针对Android6.0及其以上系统,估计Google又搞幺蛾子了)

处理方式:

1、在app启动时请求权限;

2、用AS打开ionc中Android项目,编辑MainActivity文件;添加如下代码:

private static final int BAIDU_READ_PHONE_STATE = 1000;

 public void showContacts(){
      if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
        != PackageManager.PERMISSION_GRANTED
        || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED
        || ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
        != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(getApplicationContext(),"没有权限,请手动开启定位权限",Toast.LENGTH_SHORT).show();
        // 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义)
        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE}, BAIDU_READ_PHONE_STATE);
      }
    }

    //Android6.0申请权限的回调方法
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
      super.onRequestPermissionsResult(requestCode, permissions, grantResults);
      switch (requestCode) {
        // requestCode即所声明的权限获取码,在checkSelfPermission时传入
        case BAIDU_READ_PHONE_STATE:
          if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 获取到权限,作相应处理(调用定位SDK应当确保相关权限均被授权,否则可能引起定位失败)
          } else {
            // 没有获取到权限,做特殊处理
            Toast.makeText(getApplicationContext(), "获取位置权限失败,请手动开启", Toast.LENGTH_SHORT).show();
          }
          break;
        default:
          break;
      }
    }

3、在Oncreate()中添加判断,添加如下:

 //判断是否为android6.0系统版本,如果是,需要动态添加权限
        if (Build.VERSION.SDK_INT>=23){
          showContacts();
        }

4.在Manifest中配置如下:

<!--android6.0以上部分权限获取不到需重新定义-->
    <permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <permission android:name="android.permission.READ_PHONE_STATE" />
    <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


特此说明:参考一下两个文档;

http://www.cnblogs.com/zjl6/p/6765035.html
http://blog.csdn.net/marvinhq/article/details/60352408



猜你喜欢

转载自blog.csdn.net/ducp123/article/details/77568560
今日推荐