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

首頁 > 系統 > Android > 正文

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

2019-12-12 00:38:46
字體:
來源:轉載
供稿:網友

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定位和獲取位置權限和位置信息的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上饶县| 安多县| 玉田县| 苗栗市| 锦州市| 西平县| 澜沧| 赞皇县| 乌恰县| 麻江县| 称多县| 太仓市| 永嘉县| 牙克石市| 翼城县| 敖汉旗| 凤翔县| 纳雍县| 邮箱| 弋阳县| 曲松县| 宝山区| 五莲县| 电白县| 横峰县| 洛扎县| 紫金县| 栖霞市| 玉环县| 庄河市| 阜新| 思茅市| 禹州市| 泰顺县| 哈尔滨市| 中超| 本溪市| 顺平县| 绥德县| 抚顺市| 新巴尔虎右旗|