Android中GPS和网络权限

这两天项目中需要用到数据和GPS定位,判断如果没有网络就用GPS,有网络就用数据定位。但是locationManager.getLastKnownLocation这句话一写就会报红。纠结很久,最后老员工说在他的机子上就没有问题,我意识到有可能是版本问题。在gradle中把targetSdkVersion 改成22就可以了。所以以后用GPS权限用这几步就好了。

  1. 在AndroidManifest.xml文件中加入如下权限:
     <!-- 连接互联网Internet权限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <!-- GPS定位权限 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  2. 是否连接网络
    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    //去进行判断网络是否连接
    if (manager.getActiveNetworkInfo() != null) {
        flag = manager.getActiveNetworkInfo().isAvailable();
    }

  3. 检测网络定位还是GPS定位
     if (!flag) {
                isGPS = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
          if (isGPS == true) {
               locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
               Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
               processLocationUpdated(location);
               Intent intent=new Intent(AlarmAct.this, MainActivity.class);
               AlarmAct.this.finish();
               startActivity(intent);
          } else {
               Toast.makeText(AlarmAct.this, "请打开GPS!", Toast.LENGTH_LONG).show();
         }
      } else {
             locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
             Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
             processLocationUpdated(location);
             Intent intent=new Intent(AlarmAct.this, MainActivity.class);
             AlarmAct.this.finish();
             startActivity(intent);
    }


现在用的新版本,有可能会出现差错,为了正常运行测试,你最好修改代码支持最新的权限系统,而且我觉得项目开始就要注意。 代码没有成功  改为支持最新运行时权限的app,不要设置targetSdkVersion 23 发布,否则你就有麻烦了。只有当你测试过了,再改为targetSdkVersion 23 。
       警告:现在你在android studio新建项目,targetSdkVersion 会自动设置为 23。如果你还没支持新运行时权限,我建议你首先把targetSdkVersion 降级到22。 
     这是我的第一篇博文,请大家多多鼓励,谢谢。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值