国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android6.0獲取GPS定位和獲取位置權限和位置信息的方法

2019-10-21 21:44:14
字體:
來源:轉載
供稿:網友

1.添加權限--6.0之后要動態獲取,下面會說

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

2.直接上代碼,不多說,代碼中注釋很詳細。

private static final int BAIDU_READ_PHONE_STATE = 100;//定位權限請求private static final int PRIVATE_CODE = 1315;//開啟GPS權限
/** * 檢測GPS、位置權限是否開啟 */public void showGPSContacts() { lm = (LocationManager) this.getSystemService(this.LOCATION_SERVICE); boolean ok = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); if (ok) {//開了定位服務  if (Build.VERSION.SDK_INT >= 23) { //判斷是否為android6.0系統版本,如果是,需要動態添加權限   if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)     != PERMISSION_GRANTED) {// 沒有權限,申請權限。    ActivityCompat.requestPermissions(this, LOCATIONGPS,      BAIDU_READ_PHONE_STATE);   } else {    getLocation();//getLocation為定位方法   }  } else {   getLocation();//getLocation為定位方法  } } else {  Toast.makeText(this, "系統檢測到未開啟GPS定位服務,請開啟", Toast.LENGTH_SHORT).show();  Intent intent = new Intent();  intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);  startActivityForResult(intent, PRIVATE_CODE); }}/** * 獲取具體位置的經緯度 */private void getLocation() { // 獲取位置管理服務 LocationManager locationManager; String serviceName = Context.LOCATION_SERVICE; locationManager = (LocationManager) this.getSystemService(serviceName); // 查找到服務信息 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度 criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗 String provider = locationManager.getBestProvider(criteria, true); // 獲取GPS信息 /**這段代碼不需要深究,是locationManager.getLastKnownLocation(provider)自動生成的,不加會出錯**/ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PERMISSION_GRANTED) {  // TODO: Consider calling  // ActivityCompat#requestPermissions  // here to request the missing permissions, and then overriding  // public void onRequestPermissionsResult(int requestCode, String[] permissions,  //           int[] grantResults)  // to handle the case where the user grants the permission. See the documentation  // for ActivityCompat#requestPermissions for more details.  return; } Location location = locationManager.getLastKnownLocation(provider); // 通過GPS獲取位置 updateLocation(location);}/** * 獲取到當前位置的經緯度 * @param location */private void updateLocation(Location location) { if (location != null) {  double latitude = location.getLatitude();  double longitude = location.getLongitude();  LogUtil.e("維度:" + latitude + "/n經度" + longitude); } else {  LogUtil.e("無法獲取到位置信息"); }}/** * Android6.0申請權限的回調方法 */@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) {  // requestCode即所聲明的權限獲取碼,在checkSelfPermission時傳入  case BAIDU_READ_PHONE_STATE:   //如果用戶取消,permissions可能為null.   if (grantResults[0] == PERMISSION_GRANTED && grantResults.length > 0) { //有權限    // 獲取到權限,作相應處理    getLocation();   } else {    showGPSContacts();   }   break;  default:   break; }}

onRequestPermissionsResult 這個方法主要是動態獲取6.0權限,返回時的回調,我這里需求是獲取權限之后獲取到當前位置的經緯度詳細信息

3.下面是當點擊獲取GPS定位,跳轉到系統開關,ActivityResult回調,我這里做的是必須要開啟GPS權限,沒有開啟會一直讓用戶開啟權限,怎么決定,看具體需求

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) {  case PRIVATE_CODE:    showContacts();   break; }}

4.動態權限設置添加多條權限

static final String[] LOCATIONGPS = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,   Manifest.permission.ACCESS_FINE_LOCATION,   Manifest.permission.READ_PHONE_STATE};

注:代碼很詳細!基礎知識寫的不好,大佬勿噴,謝謝!

以上這篇Android6.0獲取GPS定位和獲取位置權限和位置信息的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 登封市| 屯门区| 嘉禾县| 改则县| 旬阳县| 司法| 绥德县| 富顺县| 龙里县| 蓬莱市| 宜兰县| 江川县| 墨竹工卡县| 司法| 周至县| 龙川县| 克拉玛依市| 自治县| 宜君县| 巢湖市| 锡林浩特市| 福州市| 秦皇岛市| 呼和浩特市| 大田县| 永善县| 高雄市| 绥滨县| 孝昌县| 澳门| 双桥区| 鹿邑县| 焦作市| 哈密市| 托里县| 台江县| 辽中县| 方正县| 青神县| 台南县| 手游|