public static boolean isCN(Context context) {TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String countryIso = tm.getSimCountryIso();boolean isCN = false;//判断是不是大陆if (!TextUtils.isEmpty(countryIso)) {countryIso = countryIso.toUpperCase(Locale.US);if (countryIso.contains("CN")) {isCN = true;}}return isCN;}
/** 判断是否是国内的 SIM 卡,优先判断注册时的mcc */
public static boolean isChinaSimCard(Context c) {String mcc = getSimOperator(c);if (isOperatorEmpty(mcc)) {return false;} else {return mcc.startsWith("460");}
}
Locale locale = Locale.getDefault();
String country = locale.getCountry();

CN   就是中国

1、添加位置权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

2、activity实现获取经纬度,地理位置代码

public class MainActivity extends AppCompatActivity {private TextView textView;private static final String[] authBaseArr = {//申请类型Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION};private static final int authBaseRequestCode = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.textView);LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);initNavi();//权限检查的代码if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider callingreturn;}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,//指定GPS定位提供者1000,//指定数据更新的间隔时间1,//位置间隔的距离为1mnew LocationListener() {//监听GPS信息是否改变@Overridepublic void onLocationChanged(Location location) {//GPS信息发送改变时回调Log.i("lgq","onLocationChanged===="+location.getProvider());}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发送改变时回调}@Overridepublic void onProviderEnabled(String provider) { //定位提供者启动时回调}@Overridepublic void onProviderDisabled(String provider) { //定位提供者关闭时回调}});Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//获取最新的定位信息locationUpdates(location);}private boolean hasBasePhoneAuth() {PackageManager pm = getPackageManager();for (String auth : authBaseArr) {if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private void initNavi() {// 申请权限if (android.os.Build.VERSION.SDK_INT >= 23) {if (!hasBasePhoneAuth()) {this.requestPermissions(authBaseArr, authBaseRequestCode);return;}}}public void locationUpdates(Location location){if(location != null){StringBuilder stringBuilder = new StringBuilder(); //构建一个字符串构建器,用于记录定位信息stringBuilder.append("您的位置是:\n");stringBuilder.append("经度:");stringBuilder.append(location.getLongitude());stringBuilder.append("\n纬度:");stringBuilder.append(location.getLatitude());textView.setText(stringBuilder.toString());Log.i("lgq",".....经度==="+location.getLongitude()+"...纬度+====="+location.getLatitude());String ab = getAddress(location.getLatitude(),location.getLongitude());Log.i("lgq","sssssfa===="+ab);}else{textView.setText("GPS失效啦...");}}public String getAddress(double latitude, double longitude) {Geocoder geocoder = new Geocoder(this, Locale.getDefault());try {List<Address> addresses = geocoder.getFromLocation(latitude,longitude, 1);//            Address[addressLines=[0:"广东省东莞市健升大厦"],feature=健升大厦,admin=广东省,sub-admin=null,locality=东莞市,thoroughfare=null,postalCode=null,countryCode=CN,countryName=中国,hasLatitude=true,
//                    latitude=23.025354,hasLongitude=true,longitude=113.748738,phone=null,url=null,extras=Bundle[mParcelledData.dataSize=92]]if (addresses.size() > 0) {Address address = addresses.get(0);String data = address.toString();int startCity = data.indexOf("locality=") + "locality=".length();int endCity = data.indexOf(",", startCity);String city = data.substring(startCity, endCity);int startPlace = data.indexOf("feature=") + "feature=".length();int endplace = data.indexOf(",", startPlace);String place = data.substring(startPlace, endplace);return city + place ;}} catch (IOException e) {e.printStackTrace();}return "获取失败";}
}

如获取不到位置信息

加一判断即可

if (location==null){locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,//指定GPS定位提供者5000,//指定数据更新的间隔时间10,//位置间隔的距离为1mnew LocationListener() {//监听GPS信息是否改变@Overridepublic void onLocationChanged(Location location) {//GPS信息发送改变时回调Log.i("lgq","onLocationChanged===="+location.getProvider());}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发送改变时回调}@Overridepublic void onProviderEnabled(String provider) { //定位提供者启动时回调}@Overridepublic void onProviderDisabled(String provider) { //定位提供者关闭时回调}});location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);//获取最新的定位信息
}

Android 调用原生API获取地理位置和经纬度,判断所在国家相关推荐

  1. JavaScript调用原生API获取手机型号

    跨平台技术简介 针对原生开发面临问题,人们一直都在努力寻找好的解决方案,而时至今日,已经有很多跨平台框架,根据其原理,主要分为三类: H5+原生(Cordova.Ionic.微信小程序) JavaSc ...

  2. vue 地理位置定位_Vue 通过调用百度API获取地理位置-经度纬度省份城市

    一.首先在百度api注册获得ak密钥 二.新建js文件,我命名为loadBMap.js,里面创建script,代码如下: /** * 加载地图 * @param {Function} callback ...

  3. Android开发:基于原生API获取位置信息、卫星信号个数及参与定位的卫星个数

    目录 概述 权限申请及开启GPS 调用原生API进行定位 获取设备收到的卫星信号个数 获取用于定位的卫星信号个数 成果图 概述 最近在做室内外无缝定位的相关demo,室外定位中,GNSS定位方法具有精 ...

  4. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  5. android调用在线天气服务,android通过google api获取天气信息示例

    android通过google API获取天气信息 复制代码 代码如下: public class WeatherActivity extends Activity { private TextVie ...

  6. 利用 Android 系统原生 API 实现分享功能

    对于 App 的分享功能,基本上是一个刚需,本文主要介绍运用系统原生分享功能时候需要注意的一些问题.对于某些特定平台的一些高级分享特性,比如微信或者微博之类的分享来源标注,需要在其开放平台注册应用再接 ...

  7. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  8. 百度地图Geolocation的getStatus状态值(百度API获取当前位置[经纬度])

    //关于状态码 //BMAP_STATUS_SUCCESS 检索成功.对应数值"0". //BMAP_STATUS_CITY_LIST 城市列表.对应数值"1" ...

  9. android自动获取天气,android通过google api获取天气信息示例

    android通过google API获取天气信息 public class WeatherActivity extends Activity { private TextView txCity; p ...

最新文章

  1. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
  2. 【Python】随机函数
  3. Python会消亡吗?
  4. antd Select 使用动态数据渲染选择项
  5. ViSP创建之VS工程详细创建步骤(命令行方式)
  6. android library依赖 aar_Android 合并AAR踩坑之旅
  7. hs300 quant
  8. 最新发布!斯坦福 CS224n 出作业视频详细讲解啦!
  9. 做python开发要用多大的内存_Python 在分配内存需要考虑的问题
  10. vantUI组件:van-card 自定义内容 - 踩坑篇
  11. 在线HTTP请求/响应头转JSON工具
  12. 解决办法:Invalid Gradle JDK configuration found
  13. 阿里云祝顺民:未来的网络是云网一体,应用感知不到网络的存在
  14. PPT如何设置背景色并应用到全局
  15. 树莓派系统烧录 + 连接树莓派
  16. java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
  17. SQL 提取数字并转换为数字格式
  18. Python Pytorch
  19. html----四种“返回按钮”的使用
  20. 高级篇之导播对讲Tally灯控多机位集成通信方案

热门文章

  1. 前端学习(2866):vue3数据劫持解析1
  2. 前端学习(2585):前端怎么在响应头和请求头里面拿数据?
  3. shiro学习(12)No WebApplicationContext found:
  4. 实例27:python
  5. CM3计算板读取SHT30以及I2C驱动
  6. Linux Qt打包发布应用程序
  7. ARM 移植 PPPD
  8. 共享锁和排它锁---C++17 多线程
  9. java空值转datetime,解决Java (Spring boot) 读取数据库字段,datetime 格式为null,抛出异常 Zero date value prohibited...
  10. ref是什么意思_终于有人说出A股不敢说的话:为什么股价不断下跌,大单却持续流入,你知道是什么缘由吗?...