LocationManager.getLastKnownLocation(String provider)有可能返回null,概率还挺高

        findViewById(R.id.llMain).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AndPermission.with(MainActivity.this).runtime().permission(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
boolean fineLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean coarseLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
if (fineLocationPermissionGranted && coarseLocationPermissionGranted) {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location == null) {
new AlertDialog.Builder(MainActivity.this).setMessage("无法获取位置").show();
} else {
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Log.d(TAG, longitude + ", " + latitude);
new AlertDialog.Builder(MainActivity.this).setMessage("经度:" + longitude + "\n纬度:" + latitude).show();
}
}
}
})
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}).start();
}
});

以下是通过requestSingleUpdate获取经纬度,不过,LocationManager.requestSingleUpdate是异步的,获取到Location的时间不好控制,如果对经纬度的要求不是必须的,还是建议使用第一种

        findViewById(R.id.btnGetLongitudeAndLatitude).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AndPermission.with(MainActivity.this).runtime().permission(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
boolean fineLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean coarseLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
if (fineLocationPermissionGranted && coarseLocationPermissionGranted) {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestSingleUpdate(LocationManager.NETWORK_PROVIDER, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Log.d(TAG, longitude + ", " + latitude);
new AlertDialog.Builder(MainActivity.this).setMessage("经度:" + longitude + "\n纬度:" + latitude).show();
} @Override
public void onStatusChanged(String provider, int status, Bundle extras) { } @Override
public void onProviderEnabled(String provider) { } @Override
public void onProviderDisabled(String provider) { }
}, null);
} else {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}
})
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}).start();
}
});

最新文章

  1. dos 固定ip命令
  2. 通过版本号实现乐观锁(MVCC)
  3. java_SE(Day15)_集合1
  4. 【ZOJ1003】Crashing Balloon(DFS)
  5. maven引入json-lib的正确方法
  6. SSIS 关于并发的两个设置
  7. recv send 阻塞和非阻塞
  8. checkbox改成radio效果,单选,取消
  9. oracle11g RAC添加节点
  10. linux 下 epoll 编程
  11. Sqoop安装与使用(sqoop-1.4.5 on hadoop 1.0.4)
  12. android从中国天气网获取天气
  13. AC Me
  14. C4.5算法总结
  15. NHibernate教程(20)——二级缓存(上)
  16. Datatable转换为Json
  17. ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述
  18. java package(包)的用法
  19. vuex数据管理-数据共享
  20. 为通过 ATS 检测 Tomcat 完全 TLS v1.2、完全正向加密及其结果检验

热门文章

  1. 【Visual Studio】Error: forget to add &#39;#include &quot;stdafx.h&quot;&#39; to your source (转)
  2. 系统虚拟内存的理解 转载自http://blog.csdn.net/do2jiang/article/details/4690967
  3. 51nod 1201 整数划分
  4. 缓存区溢出漏洞工具Doona
  5. 我的第一个Java程序HelloWorld
  6. BT网络中DHT和UPnp的解释(转)
  7. SQLServer 跟踪 扩展事件(Extended Events) 专家
  8. 给button添加长按手势并侦测到此button
  9. Windows10下Apache2.4配置Django
  10. 【转载】Linux下套接字学习