Android中GPS和网络权限

来源:互联网 发布:java socket 发送数据 编辑:程序博客网 时间:2024/05/16 04:55

这两天项目中需要用到数据和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 0
原创粉丝点击