需求

获取手机自带的经纬度

代码

1、配置列表中加入权限

        

2、代码

public class LocationActivity extends Activity {    //入口是getLocation    /**     * 定位:权限判断     */    @RequiresApi(api = Build.VERSION_CODES.M)    private void getLocation() {        //检查定位权限        ArrayList permissions = new ArrayList<>();        if (ActivityCompat.checkSelfPermission(WebViewActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);        }        if (ActivityCompat.checkSelfPermission(WebViewActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);        }        //判断        if (permissions.size() == 0) {//有权限,直接获取定位            getLocationLL();        } else {//没有权限,获取定位权限            requestPermissions(permissions.toArray(new String[permissions.size()]), 2);            LogUtil.d("*************", "没有定位权限");        }    }    /**     * 定位:获取经纬度     */    private void getLocationLL() {        LogUtil.d("*************", "获取定位权限1 - 开始");        Location location = getLastKnownLocation();        if (location != null) {            //传递经纬度给网页            String result = "{code: '0',type:'2',data: {longitude: '" + location.getLongitude() + "',latitude: '" + location.getLatitude() + "'}}";            wvShow.loadUrl("javascript:callback(" + result + ");");            //日志            String locationStr = "维度:" + location.getLatitude() + "\n"                    + "经度:" + location.getLongitude();            LogUtil.d("*************", "经纬度:" + locationStr);        } else {            Toast.makeText(this, "位置信息获取失败", Toast.LENGTH_SHORT).show();            LogUtil.d("*************", "获取定位权限7 - " + "位置获取失败");        }    }    /**     * 定位:得到位置对象     * @return     */    private Location getLastKnownLocation() {        //获取地理位置管理器        LocationManager mLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);        List providers = mLocationManager.getProviders(true);        Location bestLocation = null;        for (String provider : providers) {            Location l = mLocationManager.getLastKnownLocation(provider);            if (l == null) {                continue;            }            if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) {                // Found best last known location: %s", l);                bestLocation = l;            }        }        return bestLocation;    }    /**     * 定位:权限监听     * @param requestCode     * @param permissions     * @param grantResults     */    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        switch (requestCode) {            case 2://定位                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    LogUtil.d("*************", "同意定位权限");                    getLocationLL();                } else {                    Toast.makeText(this, "未同意获取定位权限", Toast.LENGTH_SHORT).show();                }                break;            default:        }    }}

日志:

D/*************: 经纬度:维度:10.213194    经度:100.592831

 

更多相关文章

  1. Android利用WindowManager实现悬浮窗
  2. Error: Could not find gradle wrapper within Android(安卓)SDK
  3. Android权限大全
  4. Android(安卓)ContentResolver CallLog 获取手机通话记录
  5. Android中后台显示悬浮窗口的方法
  6. Android文件目录选择器(可自行扩展)
  7. Android(安卓)权限大全
  8. Android(安卓)锁屏(设备管理)
  9. Android(安卓)根据城市名称获取经纬度

随机推荐

  1. Android(安卓)在init.rc启动一个c++程序
  2. Android平台上的11个感应器你都知道吗
  3. Android多文件断点续传(二)——实现数据库
  4. Android(安卓)ActionBar的源代码分析(二)
  5. FileProvider无法获取外置SD卡问题解决方
  6. Android5.1系统通过包名给应用开放系统权
  7. cm-14.1 Android系统启动过程分析(四)-Laun
  8. Android手机的那点事
  9. 为Android系统定制重启功能
  10. Android(安卓)Dev Guide -> User Interfa